、SaveChanges
をオーバーライドして、特定のプロパティがあるのA
エンティティのために特別に見えます修正:
public override int SaveChanges()
{
var aEntries = this.ChangeTracker.Entries<A>()
.Where(e => e.Property(a => a.SomeProperty).IsModified);
foreach (var entry in aEntries)
{
// apply changes to B
}
return base.SaveChanges();
}
サイドノート:から
このようなシナリオを扱うのは私の好みのやり方ではありません。 SaveChanges
の仕事は、よく、変更を保存することです。誰かが何か他のことをするとは思わないでしょう。コードがそこにあることを忘れても簡単です。メンテナンスやバグ修正の際に他の人がコードを探すのは明らかではありません。
追加されたコードが潜在的に副作用を引き起こすと悪化します。私はSaveChanges
のコンテキスト状態を変更することに非常に注意を払います。そして、それはまさに私が "Bへの変更を適用する"と思うことです。私はむしろ重要な箇所でこれらの変更を行うでしょう:A
が変更されたコードです。