我已经覆盖了 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 个实体,并且都标记为已修改 (EntityState.Modified)。其中之一已被修改并且与底层数据库行不同。另一个实际上与底层数据库行没有什么不同,它只是被标记为这样。
在调用 SaveChanges()之后,我如何判断这两个实体中的哪一个实际上更新了数据库中的一行,而哪一个根本没有真正修改?