.NET 4 ISet HashSet 可以替换NHibernate Iesi.Collections ISet,HashSet吗?
.NET 4 ISet HashSet 可以替换NHibernate Iesi.Collections ISet,HashSet吗? 我正在使用Castle代理和NHibernate 3.0。
不,不是这个回复。
NHibernate引擎在内部集合类上使用Iesi.Collections.ISet
接口, Iesi.Collections.ISet
接口类用作NHibernate持久存在的类中的集合的包装器。 没有直接转换为System.Collections.Generic.ISet
。
更新: NHibernate 4现在在内部使用来自BCL的HashSet
,并且HashedSet
Iesi.Collections
依赖项中删除HashedSet
。 现在可以使用System.Collections.Generic.ISet
方法。
是。 有两种方法:
- 将您的集合声明为
ICollection
并将其初始化为HashSet
。 看到这篇文章 。 我将集合建模为私有成员并公开IEnumerable
因此这很有效,但缺点是你不能公开ISet
。 - 使用Jose Romaniello的Set4Net4 NuGet包。 请参阅此文章和源代码 。
是的,使用Nhibernate 4,使用System.Collections.Generic.ISet<>
现在是要走的路 。