映射NHibernate中的int列表

时间:2010-09-16 07:21:36

标签: nhibernate mapping one-to-many

在NHibernate手册中我找到了这样的映射:

<bag name="Sizes" table="SIZES" order-by="SIZE ASC">
    <key column="OWNER"/>
    <element column="SIZE" type="Int32"/>
</bag>

我不禁想知道为什么有人想做这样的事情?有没有比创建对应于给定整数的实体(本场景中的Size实体)和创建真正的一对多关系更好的映射普通整数?

2 个答案:

答案 0 :(得分:1)

问题不在于你是否想要像这样映射它,问题是,如果你需要模型中的整数列表。

你的模型中有一个int列表时,你想要像这样映射它。您不希望在模型中编写复杂的代码,只是因为映射。

那么,你认为在一个类中有一个int列表是否有用?还是Guids,enums,double的列表?

class Graph
{
  IList<double> Values { get; private set; }
}

对你有意义吗?

答案 1 :(得分:1)

您的应用程序运行的业务域的要求将决定您是否应该有一个int列表(值类型的集合)或实体列表。如果IList<int>有一个很好的用例,那么一定要去吧,让NHibernate相应地映射这个关联。否则只需删除它。

然而,因为您似乎不熟悉而删除它,并非正当理由。

我在我的域模型中经常使用它。现在我有很多'Twitter应用程序'根据搜索'关键字'索引推文,所以我把它映射成这样:

public class TwitterApplication
{
    public virtual int Id { get; set; }
    public virtual string ApplicationName { get; set; }

    // other properties (snip)

    public virtual ISet<string> Keywords { get; set; }
}

我使用此映射是因为我知道:

  1. 关键字的数量会很少 (约4-6)
  2. 我对存储不感兴趣 关键字DateAdded等。
  3. 我不打算做Paging或者 仅查询关键字 同时检索它们, 或者根本不是
  4. 在此基础上,我决定将其映射为适当的字符串集合。