如何使用NHibernate将字符串列表映射到我的实体?

2 nhibernate

我的数据库中有两个表:文章和标签

Tags表由ArticleID(外键)和Tag(varchar)组成.

现在我需要使用IList标签或ReadOnlyCollection标签将文章标签映射到Article实体的只读集合中.

我已经查阅了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>
Run Code Online (Sandbox Code Playgroud)

lom*_*axx 5

要在映射中使用的集合类型取决于您希望如何在代码中表示集合.设置映射如下:

  • <list>直接映射到一个IList.
  • <map>直接映射到一个IDictionary.
  • <bag>映射到一个IList.A不完全符合IList接口,因为不保证Add()方法返回正确的索引.可以在<bag>不初始化IList 的情况下将对象添加到a .确保将IList隐藏在API的使用者之外,或者将其记录在案.
  • <set>映射到一个Iesi.Collections.ISet.该接口是与NHibernate一起分发的Iesi.Collections程序集的一部分.

因此,如果您想要返回IList,那么您将使用<list>映射.在你的情况下,我可能会使用<list>映射进行映射.