Entity Framework 4.1 DbContextクラスのSaveChanges()メソッドをオーバーライドしました。
私のオーバーライドは次のようになります:
public override int SaveChanges() {
IEnumerable<DbEntityEntry> modifiedEntityEntries = ChangeTracker.Entries().Where( e => e.State == EntityState.Modified );
Debug.Assert( modifiedEntityEntries.Count() == 2 );
int savedChanges = base.SaveChanges();
Debug.Assert( savedChanges == 1 );
// HELP! At this point, how do I tell Which of the two "Modified" entities actually updated a row in the database?
return savedChanges;
}
コンテキストに2つのエンティティがあり、両方がModified(EntityState.Modified)としてマークされていると想定します。それらの1つは変更されており、基になるデータベース行とは異なります。もう1つは、基になるデータベース行と実際には違いはなく、そのようにマークされているだけです。
SaveChanges()を呼び出した後、2つのエンティティのどちらがデータベースの行を実際に更新したか、そしてどちらが実際には変更されなかったかを確認するにはどうすればよいですか?