私は、EF w/Self Tracking Entitiesを使用してアプリケーションを開発しています。 STEはレイジーローディングをサポートしていないため、外部キーを変更した後にエンティティのナビゲーションプロパティを更新する開発のための推奨される方法またはベストプラクティスは何ですか?これは、ここで説明されて:あなたは外部キープロパティを設定することで、オブジェクト間の関係を変更するとセルフタッキングエンティティ - ナビゲーションプロパティを更新する方法
http://msdn.microsoft.com/en-us/library/ff407090.aspx
」、参照ナビゲーションプロパティはnullに設定され、クライアントに適切な主要なエンティティに同期されません後。グラフがオブジェクトコンテキストに添付されます(たとえば、ApplyChangesメソッドを呼び出した後など)、外部キーのプロパティとナビゲーションのプロパティが同期されます。
この問題は、ここで扱われています
しかし、これは実際にこれを行うための最善の方法ですか?この制限を回避するためにあなたが使用した、または考えられるいくつかの方法は何ですか?私はあなたがデータグリッドのナビゲーションプロパティを表示し、レコードに変更を加えるたびにnullに設定することが困難な場合、誰もが自己追跡エンティティを使用していると信じるのは難しいです。これが起こると私のアプリケーションではファンキーに見えます。確かに私は保存してこれらのプロパティを更新した後にサーバーに戻ることができますが、私はサーバー上で保存する呼び出しを行うまで、データガードにヌルナビゲーションプロパティの束を持っています。
たとえば、私はユーザーがレコードグリッドからデータグリッドを選択し、それを下のフォームで編集するマスターの詳細シナリオを持っています。私のコンボボックスがバインドされている外部キーを変更すると、DataGridのナビゲーションプロパティにバインドされたレコードがnullに設定されます。外部キーが変更されたときに、この動作を回避してナビゲーションプロパティを更新するにはどうすればよいですか?
私が代わりに外部キーのナビゲーションプロパティを設定することで関係を変更しようとした場合、私は変更を送信しようとすると、私は次の例外を取得:
「れるAcceptChangesは、別のオブジェクトキー値の競合beacuse継続することはできませんObjectStateManager内のオブジェクト。AcceptChangesを呼び出す前に、キー値が一意であることを確認してください。
マスター詳細データグリッドをエンティティのナビゲーションプロパティにバインドすることはできませんか?これを克服するためのあらゆる助けや方向性は非常に高く評価されます。
ありがとうございます!