1. ホーム
  2. c#

[解決済み] EFコードのCTP5でProxyCreationEnabledを最初にオフにすることのデメリットは何ですか?

2023-06-10 20:16:39

質問

私のWCFサービスがコードファーストモデルからクラスを返すことができる唯一の方法は ProxyCreationEnablefalse に変更します。

((IObjectContextAdapter)MyDb).ObjectContext.ContextOptions.ProxyCreationEnable = false;

このようなことをすると、どのような悪影響があるのでしょうか? 1つの利点は、少なくともこれらの動的な型をシリアライズして、WCFを使用してワイヤ上で送信できるようにすることができることです。

どのように解決するのですか?

動的プロキシは、変更追跡と遅延ロードのために使用されます。WCF がオブジェクトをシリアライズしようとすると、関連するコンテキストは通常閉じて破棄されますが、ナビゲーション プロパティのシリアライズは自動的に遅延ロード (閉じたコンテキスト上) => 例外をトリガーします。

遅延ロードをオフにすると、使用したいすべてのナビゲーション プロパティでイーガー ローディングを使用する必要があります (ObjectQuery に含まれます)。変更の追跡はWCF上では機能せず、ObjectContextにアタッチされているエンティティの変更に対してのみ機能します。