我的应用程序要求:如果用户更改了任何属性 - 例如将数据输入文本框然后离开文本框 - 它必须立即更新到数据库。
我使用带有 MVVM 设计模式的 WPF。我所有的实体都实现了INotifyPropertyChanged
. 如果客户的任何财产发生变化,我会
Customer.cs
customerService.UpdateCustomer(this);
实体真的应该自我更新吗?还是将它自己的更新引入数据库?
我的意思是,如果不在实体内,我还能如何立即更新财产?
我的应用程序要求:如果用户更改了任何属性 - 例如将数据输入文本框然后离开文本框 - 它必须立即更新到数据库。
我使用带有 MVVM 设计模式的 WPF。我所有的实体都实现了INotifyPropertyChanged
. 如果客户的任何财产发生变化,我会
Customer.cs
customerService.UpdateCustomer(this);
实体真的应该自我更新吗?还是将它自己的更新引入数据库?
我的意思是,如果不在实体内,我还能如何立即更新财产?
实体不应自我更新;另一个服务(存储库)应该这样做。您可以通过订阅实体的事件来诱导存储库应该更新PropertyChanged
实体。在事件处理程序中,您可以确保您的实体已更新:
Customer c = new Customer();
c.PropertyChanged += (s, e) => customerService.UpdateCustomer(c);
但是,在旁注中,我认为每当属性更改时都应该更改您的实体是一个奇怪的要求。这意味着交易毫无用处。我的意思是,您没有真正的“工作单元”,所有更改都应该提交,或者根本不应该持久化?除此之外,它还会导致大量的数据库往返。