nhibernateクロスマシンの遅延読み込みの問題
-
10-07-2019 - |
質問
iはクライアント、サーバー、dbを取得しました 流なnhibernateでサーバーにマップされたdb。 ここまでは順調ですね クライアントはwcfを使用してサーバーと通信します。 クライアント側で遅延読み込みを実装したい。
解決策はありますか?
解決
AFAIKには解決策がありません。遅延読み込みは、nhibernateの実装に非常に本質的なプロキシメカニズムで動作します。 Nhibernate.Remote というプロジェクトが1つありましたが、これは廃止されました。 nhibernateはwcfで動作しますが、遅延読み込みはありません。
他のヒント
WCFの性質は、送信前にシェーピングされるデータを学習することです。つまり、既に取得されて何らかのデータ契約に入れられています。
最初のサービス呼び出しでパラメータを指定して、子プロパティに値を設定するかどうかを示すことができますが、どこまで行くかは常に注意が必要です。
それが実現できないことに気付いたとき、投影と結果変換を使用することにしました。
問題なく動作します。
遅延読み込みコレクションを読み込む必要がある場合は、サーバー上でそれを繰り返し、クライアントに送り返します。 部分的に選択されたオブジェクトを更新する場合、dbから彼を再選択し、完全なデータエンティティを更新する必要があります。
しかし、それは価値がある
悲観的で申し訳ありませんが、NHCFをWCF経由の遅延読み込みで動作させることは動作しません。
以下のコードを使用すると、WCFは遅延読み込みで動作します:
var proxy = myObj as INHibernateProxy;
myObj = (myObj)proxy.HibernateLazyInitializer.GetImplementation();
所属していません StackOverflow