2011-03-15 10 views
0

EOC 4.0から分離されたPOCOプロキシがあります(デタッチされているということは、ObjectContextが処理したことを意味します)。デタッチされたPOCOプロキシに関連するエンティティIDを設定します

プロパティMyRelatedEntityIdはナビゲーションプロパティMyRelatedEntityのFKです。

私はMyRelatedEntityIdにどのような値を設定したいのか分かります。手動で設定しようとしましたが、分離されたPOCOプロキシはObjectContextがすでに破棄しているという例外をスローします。

これを行うにはどうすればよいですか、これには回避策がありますか?

答えて

1

遅延読み込みをオフにする必要があります。私は一度FKのプロパティを設定すると、ダイナミックプロキシは、関連するエンティティを読み込もうとし、それは配置されたコンテキストのために失敗すると思う。

編集:あなたが述べたように、遅延ロードがトリガされるべきではありませんので、

私はこの問題を確認しました。問題は、Fixupメソッドを使用して双方向の関係を設定する自動生成コードです。以前の関連エンティティをロードしてFKを変更した場合、関連するエンティティがnullに設定されます。これにより、以前の関連エンティティの子から現在のエンティティを削除しようとするフィックスアップメソッドがトリガされます。コンテキストを破棄する前にロードしなかった場合、例外が発生します。生成されたコードを含むコードをデバッグしようとします。

ソリューションは、次のいずれかです。

    は、関連エンティティから、このシナリオのため
  • 削除ナビゲーションコレクションを遅延ロードをオフにし
  • 変更T4テンプレートには、フィックスアップメソッドが生成されないよう
+0

遅延ロードをオフにしたくないです。私はナビゲーションプロパティを設定しようとしていません、実際のFK Id – Jeff

+0

ObjectContextが破棄されると遅延ロードを無効にするコードが追加されましたが、それまではそのままにしておきます。 – Jeff

1

ObjectContextが破棄される前にエンティティをデタッチしましたか?エンティティを新しいObjectContextにアタッチした後に設定しようとしましたか?

+0

ObjectContextを削除すると、すべてのエンティティがデタッチ状態になります。私はまだエンティティを再接続したくない... FKのIDを設定するだけだ。 – Jeff

+0

削除されたObjectContextにアタッチされたエンティティが自動的に切り離され、 – RobS

関連する問題