仅保存在实体框架4中更改的字段
本文关键字:字段 保存 存在 实体 框架 | 更新日期: 2023-09-27 18:07:49
我有一个Windows窗体与一些文本框和保存按钮。当表单加载时,文本框将填充来自模型中实体的数据。当用户单击save按钮时,将每个文本框中的值写回实体,然后调用SaveChanges将数据提交到数据库。
我想知道的是检查表单是否包含更改的最好方法是什么?如果它不包含更改,那么我不需要调用SaveChanges,我可以保存将记录写回数据库。如果它确实包含更改,并且用户没有单击Save按钮,我想让用户确认不需要保存更改。
我想也许我可以只是更新实体的字段,然后在调用SaveChanges之前检查它的State属性,但这失败了,因为更新任何字段,即使具有相同的值,也会导致实体被标记为已修改。
所以,我的问题是,在调用SaveChanges之前,检查更改是否已经对表单进行了最好的方法是什么?
谢谢,马特
可以查看实体状态。只需将文本框中的数据保存到实体中,并查看EntityState是否为EntityState. unchanged .
详情在此:http://msdn.microsoft.com/en-us/library/system.data.entitystate.aspx
实际上,即使使用与前一个相同的值更新字段也算作已修改的实体,并且在大多数情况下,这是正确的业务规则。
您可以做的是保留用于填充表单字段的原始对象的副本,并使用相等比较器将其与当前对象进行比较。它不是很漂亮,但它可以在特定情况下完成工作,在这种情况下,您不能指望对象状态管理器对修改的意见。