2012-02-10 11 views

答えて

10

いいえ、この返信はありません。

NHibernateエンジンは、内部コレクションクラスのIesi.Collections.ISetインターフェイスを使用します。これは、NHibernateが持続するクラス内のコレクションの周りのラッパーとして使用されます。 System.Collections.Generic.ISet<T>への直接的な変換はありません。

更新: NHibernateの4は現在、内部的にBCLからHashSet<T>を使用し、HashedSet<T>Iesi.Collections依存から削除されました。 System.Collections.Generic.ISet<T>の使用方法が利用可能になりました。

18

はい。

  1. ICollection<T>としてあなたのコレクションを宣言し、 HashSet<T>として初期化:2つの方法があります。 this articleを参照してください。私はコレクションをプライベート のようにモデル化し、IEnumerable<T>を公開しています。これはうまくいくが、欠点はISet<T>を公開できないことです。
  2. Jose RomanielloのSet4Net4 NuGetパッケージを使用します。 this article およびsource codeを参照してください。
+0

リンクありがとうございます。 –

+0

私は第2のアプローチが好きです。 – kaptan

+0

うん、試してみたところ、何らかの理由でNHibがコレクションとしてコレクションを再作成していたので、アイテムを追加/削除できませんでした。それはちょうどICollectionを見て、好きなものを置くことができると決めました... – JustAMartin

2

はい、Nhibernate 4を使用して、System.Collections.Generic.ISet<>を使用しています。the way to goです。

関連する問題