2012-02-10 49 views

回答

10

不,不是本回复。

NHibernate引擎在内部集合类上使用Iesi.Collections.ISet接口,该接口用作NHibernate持久化类中集合的包装器。没有直接转换为System.Collections.Generic.ISet<T>

更新:现在 NHibernate的4使用HashSet<T>从BCL内部,并HashedSet<T>已经从Iesi.Collections依赖删除。现在可以使用System.Collections.Generic.ISet<T>的方法。

18

是的。有两种方法:

  1. 声明您的收藏为ICollection<T>并初始化它作为 HashSet<T>。见this article。我将模型集合作为私人 成员并公开IEnumerable<T>,所以这可以很好地工作,但缺点是您无法公开ISet<T>
  2. 使用Jose Romaniello的Set4Net4 NuGet包。请参阅this articlesource code
+0

感谢您的链接。 – 2012-02-10 12:42:17

+0

我喜欢第二种方法。 – kaptan 2012-04-24 20:46:27

+0

嗯,当我尝试它时,NHib出于某种原因正在将我的集合重新创建为一个Array,所以我无法添加/删除项目。它只是看着ICollection,并决定它可以放任何喜欢的东西...... – JustAMartin 2013-02-22 09:25:34

2

是的,用Nhibernate 4,使用System.Collections.Generic.ISet<>现在是the way to go

相关问题