在我的应用程序中我管理人员信息,我有一个列表框显示人员和三个按钮添加/编辑/删除,当我选择行并按编辑按钮时,应用程序打开一个带有人员信息的新窗口并保存到某个数据库表(ModifyCheck),如果其他用户尝试编辑此人,则此人现在进行修改。在这个人窗口中我有两个按钮(保存/取消)。此窗口中的所有控件都绑定了object属性,当我进行一些修改并按下save时,我应该从(ModifyCheck)中删除该行。
问题是:
如果我打开人员窗口并修改某些信息,请按取消,我将使用SaveChange更新ModifyCheck表。在这种情况下,我修改的所有信息都会更新,尽管我按下了取消。
如何仅对ModifyCheck应用SaveChanges()?
答案 0 :(得分:1)
不要将实体属性直接绑定到控件。创建具有相同属性的视图模型,将它们绑定到控件。当用户进行一些更改时,它将修改viewModel的属性,而不是您的实体。如果用户按下“保存”按钮,则必须更新实体的字段。如果用户按下取消,则实体不会发生任何事情。
为简单起见,假设您有一个WinForms应用程序。每个TextBox控件都有一个名称。当用户按下“保存”按钮时,您将其值分配给实体:
person.FirstName = textBoxFirstName.Text;
db.SaveChanges();
否则您将关闭表单,任何内容都不会更改person