我的数据库中有两个表:文章和标签
Tags表由ArticleID(外键)和Tag(varchar)组成。
现在我需要使用IList标签或ReadOnlyCollection标签将文章标签映射到文章实体的只读集合中。
我已经查阅了NHibernate参考资料,但我似乎无法确定何时使用Set,Bag和其他Nhibernate集合。我已经看过使用ISet集合的例子,但我真的不喜欢将我的实体类绑定到NHibernate类型。
如何在NHibernate中进行映射?
编辑:我最终使用的是<bag>
,因为它不需要索引:
<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
<key column="ArticleId" />
<element column="Tag" type="System.String" />
</bag>
答案 0 :(得分:5)
映射中使用的集合类型取决于您希望如何在代码中表示集合。设置映射如下:
<list>
直接映射到
的IList。<map>
直接映射到IDictionary。<bag>
映射到IList。 A不完全符合
与IList接口因为
不保证Add()方法
返回正确的索引。一个东西
可以在没有<bag>
的情况下添加到<set>
初始化IList。确保
要么隐藏IList
您的API的消费者或制作它
记录完备。<list>
映射到Iesi.Collections.ISet。那
界面是其中的一部分
Iesi.Collections汇编
与NHibernate一起发布。因此,如果您想要返回IList,那么您将使用<list>
映射。在您的情况下,我可能会使用{{1}}映射进行映射。