0

我有一个带有一些文本框和一个保存按钮的 Windows 窗体。当表单加载时,文本框会填充来自我模型中实体的数据。当用户单击保存按钮时,每个文本框中的值将被写回实体,然后调用 SaveChanges 将数据提交到数据库。

我想知道的是检查表单是否包含更改的最佳方法是什么?如果它不包含更改,那么我不需要调用 SaveChanges,我可以保存将记录写回数据库。如果它确实包含更改并且用户没有单击“保存”按钮,我希望用户确认不需要保存更改。

我想也许我可以更新实体的字段,然后在调用 SaveChanges 之前检查其 State 属性,但这会失败,因为更新任何字段,即使具有相同的值,也会导致实体被标记为已修改。

所以,我的问题是,在调用 SaveChanges 之前检查表单是否实际进行了更改的最佳方法是什么?

谢谢,

马特

4

2 回答 2

0

实际上,即使使用与前一个相同的值更新字段也算作修改的实体,在大多数情况下,这是正确的业务规则。

您可以做的是保留用于填充表单字段的原始对象的副本,并使用相等比较器将其与当前对象进行比较。它并不漂亮,但它在您不能指望对象状态管理器的修改意见的特定情况下完成工作。

于 2011-09-06T13:11:16.880 回答
0

您可以检查实体状态。只需将文本框中的数据保存到实体并查看EntityState是否为EntityState.Unchanged

此处的详细信息:http: //msdn.microsoft.com/en-us/library/system.data.entitystate.aspx

于 2011-09-06T09:50:00.790 回答