关于实体框架状态,特别是在使用SaveChanges
调用更新记录时,我知道它只会更新已修改EntityState
的记录(暂时忽略添加/删除)< / p>
我的问题是如何跟踪它以及它如何处理未更改值的分配?
如果
,我正在尝试解决if (value1.Text != table.value1) { table.value1 = value1.Text; }
是必要的,以阻止多余的更新或如果我可以逃脱:
table.value1 = value1.Text;
或者是否会将状态设置为记录上的“已修改”标志,即使该值相同?
谢谢!
答案 0 :(得分:2)
与https://msdn.microsoft.com/en-us/data/jj556205一样,
当使用大多数POCO实体时,确定实体的方式 已更改(因此需要将更新发送到数据库) 由Detect Changes算法处理。检测更改的工作原理 检测当前属性值之间的差异 实体和存储在快照中的原始属性值 当实体被查询或附加时。
实体框架在调用DbContext.SaveChanges时自动运行上述检测更改。 EF实际上通过将当前值和原始值与
进行比较来确定变化