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

如何使用NHibernate将字符串列表映射到实体?,nhibernate,Nhibernate,我的数据库中有两个表:Articles和Tags 标记表由ArticleID(外键)和标记(varchar)组成 现在,我需要使用IList标记或ReadOnlyCollection标记将articles标记映射到Article实体上的只读集合 我查阅了NHibernate的参考资料,但我似乎不知道什么时候应该使用Set、Bag和其他NHibernate系列。我见过使用ISet集合的示例,但我真的不喜欢将我的实体类绑定到NHibernate类型 如何在NHibernate中进行映射 编辑:我最终

我的数据库中有两个表:Articles和Tags

标记表由ArticleID(外键)和标记(varchar)组成

现在,我需要使用IList标记或ReadOnlyCollection标记将articles标记映射到Article实体上的只读集合

我查阅了NHibernate的参考资料,但我似乎不知道什么时候应该使用Set、Bag和其他NHibernate系列。我见过使用ISet集合的示例,但我真的不喜欢将我的实体类绑定到NHibernate类型

如何在NHibernate中进行映射

编辑:我最终使用了
,因为它不需要索引:

<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
  <key column="ArticleId" />
  <element column="Tag" type="System.String" />
</bag>

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

  • 直接映射到 伊里斯特
  • 直接映射到IDictionary
  • 映射到IList。A不完全符合 由于 Add()方法不保证 返回正确的索引。物件 可以添加到
    而无需 初始化IList。确保 要么将IList从 您的API的消费者或使其 有据可查
  • 映射到Iesi.Collections.ISet。那个 接口是 集合集合集合 与NHibernate一起分发
因此,如果希望返回IList,那么可以使用
映射。在您的情况下,我可能会使用
映射进行映射