C# · 12月 24, 2021

c# – WPF,MVVM,ICommand和存储库

我有一个看起来像这样的 WPF应用程序:

viewmodel包装模型并通过INotifyChanged公开与视图相关的任何属性.该视图还绑定到几个ICommand对象,这些对象处理由视图触发的某些行为.我有一个外部ICommand,其唯一目的是将模型保存到数据库中.

我读过的所有内容都表明视图或视图模型都不应该引用存储库.这就是命令3在视图模型之外的原因.

我的问题是双重的.首先,这是一个合理的架构,其次,什么是将模型实例转移到命令3以便将其放入存储库的好方法?

解决方法 我个人认为viewmodel对存储库的引用没有问题.试图避免这种情况会导致不必要的并发症.

在MVVM中,viewmodel通常是位于模型上方的“粘合”层 – 而存储库是模型的一部分(它是域特定数据/逻辑的一部分).我个人对此的看法:

通过将命令3放入VM,让VM直接与存储库一起工作可能比尝试将其分离出来更干净.