【问题标题】:NHibernate - Do I have to have a class to interface with a table?NHibernate - 我必须有一个类来与表交互吗?
【发布时间】:2009-12-03 06:43:37
【问题描述】:

我有一个名为 Entry 的类。此类作为称为 TopicsOfInterest 的字符串集合。在我的数据库中,TopicsOfInterest 由一个单独的表表示,因为它在条目与其感兴趣的主题之间存在一对多的关系。我想使用 nhibernate 来填充这个集合,但是由于表存储的很少(只有一个条目 id 和一个字符串),我希望我能以某种方式绕过创建一个类来表示它以及随之而来的所有内容(映射、配置等)

这可能吗?如果可以,怎么做?我正在使用 Fluent Nhibernate,所以特定的东西会更有帮助。

【问题讨论】:

  • 我不认为这是一个 Fluent Nhibernate 的例子,但我可能是错的......
  • 是的,它不是,但它足够接近我得出一个解决方案。 :)

标签: nhibernate


【解决方案1】:
public class Entry
{
    private readonly IList<string> topicsOfInterest;

    public Entry()
    {
      topicsOfInterest = new List<string>();
    }

    public virtual int Id { get; set; }

    public virtual IEnumerable<string> TopicsOfInterest
    {
       get { return topicsOfInterest; }
    }
}

public class EntryMapping : ClassMap<Entry>
{
  public EntryMapping()
  {  
     Id(entry => entry.Id);
     HasMany(entry => entry.TopicsOfInterest)
       .Table("TableName")
       .AsList()
       .Element("ColumnName")
       .Cascade.All()
       .Access.CamelCaseField();
  }
}

【讨论】:

  • 谢谢,这正是我最终要做的。
【解决方案2】:

我有类似的要求来映射一组浮点数。

我正在使用自动映射来生成我的整个关系模型 - 你暗示你已经有一些表,所以这可能不适用,除非你选择切换到自动映射方法。

事实证明 NHibernate 不会自动映射基本类型的集合 - 你需要一个覆盖。

查看我对自己的问题How do you automap List or float[] with Fluent NHibernate? 的回答。

我提供了很多示例代码 - 您应该能够将“字符串”替换为“浮点数”,并使其正常工作。请注意说明文本中的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2015-08-30
    • 2016-09-08
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多