EFコードの使用に関しては、最初に変更追跡の2つのオプションがあります。
- スナップショットベースの変更追跡
- プロキシを使用した通知ベースの変更追跡
変更追跡の各方法を使用して実行する場合は、次のコードを考慮してください。デフォルトの構成オプションを使用してDbContextインスタンスを想定します。
var o = context.MySet.First();
o.MyProperty = 42;
context.SaveChanges();
1行目のコンテキストによってロードおよび追跡されたエンティティインスタンスの「MyProperty」の値がすでに42である場合、3行目の「SaveChanges」の呼び出し中の変更トラッカーの状態は異なります。
- スナップショットベースの変更追跡-その状態は「変更なし」です。
- プロキシを使用した通知ベースの変更追跡-その状態は「変更済み」です。
通知ベースの変更追跡では、「SaveChanges」の呼び出し中に不要な更新ステートメントがデータベースに送信されることを考えると、ほとんどの開発者はスナップショットベースの変更追跡の動作を好むと思います。
この行動の違いは意図的なものですか?
プロキシで通知ベースの変更追跡を使用するときに、スナップショットベースの変更追跡と同じ動作を実現する方法はありますか?
これはこの機能の提案に関連していると私は信じていることに注意してください -http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1015363-better-change-tracking-for-poco-proxies