我是 WPF 的新手,我正在使用 Linq To Entities(和 SQLite 数据库)构建一个小应用。
我只是想知道,当属性发生变化时,我必须在哪里调用我的方法才能更新数据库? 我会在 ViewModel 的属性中这样说:
public string FirstName
{
get
{
return this.person.FirstName;
}
set
{
this.person.FirstName = value;
OnPropertyChanged("FirstName");
this.person.updateFirstname(value);
}
}
我不确定这是否是最好的解决方案...
最佳答案
何时保存到数据库的问题导致了 Unit of Work pattern . Linq-to-Entities 通过 ObjectContext 合理地实现了这一点,其中数据在上下文中排队,然后在逻辑工作单元完成时保存到数据库。
在您的示例中,您已经在可能连接到上下文的 L2E 实体 Person 上设置了属性。当您调用 ObjectContext.SaveChanges , 这将被保存而不需要 updateFirstname
方法。
您必须决定何时调用 ObjectContext.SaveChanges
(从而结束工作单元),并在用户明确保存或关闭表单时执行此操作(可选提示供用户提交或放弃更改)是一种合理的方法。为实现这一点,您的 View 模型引用 ObjectContext 并可以在执行用户操作(通常使用 WPF ICommand
published by the viewmodel and bound to the view 建模)时调用 SaveChanges
方法。
关于c# - 我应该什么时候更新数据库以反射(reflect)属性变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384425/