在NHibernate手册中我找到了这样的映射:
<bag name="Sizes" table="SIZES" order-by="SIZE ASC">
<key column="OWNER"/>
<element column="SIZE" type="Int32"/>
</bag>
我不禁想知道为什么有人想做这样的事情?有没有比创建对应于给定整数的实体(本场景中的Size实体)和创建真正的一对多关系更好的映射普通整数?
答案 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; }
}
我使用此映射是因为我知道:
在此基础上,我决定将其映射为适当的字符串集合。