为什么 EntityFramework 6 HasChanges 方法 return 当更改的 属性 值恢复为原始值时为真?
Why EntityFramework 6 HasChanges method return true when the changed property values are reverted back to original values?
//Person.Name is "Peter"
Person person = DbContext.People.Where(x => x.Id == 0).FirstOrDefault();
bool b = DbContext.ChangeTracker.HasChanges(); //return false;
person.Name = "Patrick";
b = DbContext.ChangeTracker.HasChanges(); //return true;
person.Name = "Peter";
b = DbContext.ChangeTracker.HasChanges(); //expect false but return true;
根据上面的代码,我说一旦实体发生变化,dbcontext 的 changetracker 不会费心检查值是否已恢复,我说得对吗?
当您更改 属性 值时,EF DbContext 状态设置为已修改,因此如果您想要 return 未更改状态,您必须明确设置此:
DbContext.Entry(yourEntry).State = EntityState.Unchanged;
一个有用的question/answer是here
//Person.Name is "Peter"
Person person = DbContext.People.Where(x => x.Id == 0).FirstOrDefault();
bool b = DbContext.ChangeTracker.HasChanges(); //return false;
person.Name = "Patrick";
b = DbContext.ChangeTracker.HasChanges(); //return true;
person.Name = "Peter";
b = DbContext.ChangeTracker.HasChanges(); //expect false but return true;
根据上面的代码,我说一旦实体发生变化,dbcontext 的 changetracker 不会费心检查值是否已恢复,我说得对吗?
当您更改 属性 值时,EF DbContext 状态设置为已修改,因此如果您想要 return 未更改状态,您必须明确设置此:
DbContext.Entry(yourEntry).State = EntityState.Unchanged;
一个有用的question/answer是here