EF4(データベースファースト)を使用して、コンテキストレベルで変更監査システムを実装しようとしています。、、またはコンテキストのSaveChanges
状態を持つエンティティをオーバーライドしてキャプチャしています。これは通常は機能しますが、どのエンティティにもこの状態がない(コードで変更したエンティティを含む)という問題が発生しましたが、コンテキストにはデータベースへの変更があります。状態としてのエントリのリストを確認しましたが、変更したエンティティはそのリストに含まれています。Added
Deleted
Modified
ObjectStateManager
Unchanged
私が見ることができる唯一の問題は、自己追跡エンティティを使用していることです(これは、通常、変更のためにこれらのSTEをクライアントに送信するWCFサービスであり、クライアントは変更されたSTEのバックアップを渡して変更を永続化します) 。起こっているように見えるのは、サーバー上で取得され、そこで直接変更されたオブジェクト(クライアントに渡されてSTEを使用するのでObjectChangeTracker
はなく)がとしてマークされていないことModified
です。これは正常/予期される動作ですか?この場合、変更が行われているときに、コンテキストがデータベースに保持する変更を決定するために、以外のものを使用していることは明らかです。ObjectStateManager
これらの変更を検出して追跡するにはどうすればよいですか?コンテキストが変更を追跡するために使用しているものを誰かが知っていますか?私はいつもそれがだと思っていましたObjectStateManager
が、そうではないようです。