私の WebApi プロジェクトでは、EF6 を使用し、Uow および一般的なリポジトリ パターンに従います。また、モデルを dto にマッピングし、その逆も行います。
現在、作成時に次のように設定していますdbContext
。
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
AsNoTracking
また、データベースからデータをフェッチするときにも使用します。
データベースを更新するとき、私は dbContext を直接使用して、小さなエンティティ (つまり、関係がない) を処理するときにエンティティをアタッチしています。複雑なエンティティ (つまり、関係がある) には GraphDiff を使用します。
プロキシと追跡を有効にし、無効にしても、DB に送信される SQL ステートメントには、実際に変更された列だけではなく、テーブルのすべての列が含まれていることに気付きました。
ただし、GraphDiff は変更を DB に保存する前にエンティティを再度ロードしています。この場合の SQL ステートメントには、すべての列も含まれています。これは正しい動作ですか?
私のシナリオでは、切り離されたエンティティを扱っているので、プロキシと追跡を無効にしても安全ですか?