2012-02-10 82 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

相關問題