2015-07-11 54 views
1

关于实体框架的状态,特别是当它涉及到一个SaveChanges通话记录更新实体框架EntityState和调用SaveChanges行为,我知道它会只更新已修改EntityState记录(忽略添加/删除现在)没有变化

我的问题是,这是如何跟踪,以及它如何处理赋值不变的值?

我试图找出是否

if (value1.Text != table.value1) { table.value1 = value1.Text; } 

必须停止多余的更新,或者如果我可以逃脱:

table.value1 = value1.Text; 

或意志状态设置为“修改'记录上的旗帜,即使价值是相同的?

谢谢!

回答

1

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

当使用最POCO实体的实体如何具有 改变的确定(因此哪些更新需要被发送到数据库) 由检测更改算法处理。通过 检测实体被查询或附加时检测 实体的当前属性值与存储在快照 中的原始属性值之间的差异。

实体框架自动运行上述打电话给DbContext.SaveChanges时发现变化。而EF实际上通过比较当前值和原始值来确定更改

+0

真棒,谢谢 – David