0

CSLA ビジネス オブジェクトと NHibernate ORM を使用した多層アプリケーションがあります。ビジネス オブジェクトでは、コレクション データ メンバーを として保持ICollection<T>し、オブジェクト マッピング ファイルではそれらを として定義します<set>

NHibernate は独自の具象型を使用してこれらのコレクションをフェッチするため、クライアント アプリケーションで NHibernate アセンブリを参照しないため (そしてそれを変更したくないため)、これらのコレクションがクライアントに到達するときに問題が発生します。

NHibernate コレクション型インターフェイスを実装せずに、それを解決する方法、または何らかの方法で NHibernate に .net コレクション型または独自のコレクション型を使用させる方法はありますか?

前もって感謝します、

ヤロン。

4

2 に答える 2

0

NHibernate は、持続状態を管理するためにコレクションの独自の実装を必要とします。したがって、NHibernate の動作を変更することはできません。

シリアライズ時にコレクションを配列またはリストに変換するWCFを使用しています。インフラストラクチャがこれを行わない場合は、クライアントに送信する前にオブジェクトを変換する必要があります。

とにかく、DTO (データ転送オブジェクト) モデルを使用することをお勧めします。ビジネス モデルから DTO モデルにすべてのデータをコピーする必要があります。

DTO モデルが気に入らない場合は、コレクションを交換する必要があると思います。NH のコレクションを .NET フレームワーク コレクションと交換するメソッドを作成します。リフレクションを使用しています。

または-クライアントでNHibernateへの参照を使用しています。

于 2009-05-14T13:14:50.003 に答える
-1

Iesi.Collections を参照せずにICollection<T>andを使用できますHashSet<T>

于 2009-05-14T11:08:20.993 に答える