实体框架EntityState和SaveChanges行为没有更改

时间:2015-07-11 13:17:33

标签: c# entity-framework

关于实体框架状态,特别是在使用SaveChanges调用更新记录时,我知道它只会更新已修改EntityState的记录(暂时忽略添加/删除)< / p>

我的问题是如何跟踪它以及它如何处理未更改值的分配?

如果

,我正在尝试解决
if (value1.Text != table.value1) { table.value1 = value1.Text; }

是必要的,以阻止多余的更新或如果我可以逃脱:

table.value1 = value1.Text;

或者是否会将状态设置为记录上的“已修改”标志,即使该值相同?

谢谢!

1 个答案:

答案 0 :(得分:2)

https://msdn.microsoft.com/en-us/data/jj556205一样,

  

当使用大多数POCO实体时,确定实体的方式   已更改(因此需要将更新发送到数据库)   由Detect Changes算法处理。检测更改的工作原理   检测当前属性值之间的差异   实体和存储在快照中的原始属性值   当实体被查询或附加时。

实体框架在调用DbContext.SaveChanges时自动运行上述检测更改。 EF实际上通过将当前值和原始值与

进行比较来确定变化