WPF,MVVM,ICommand和存储库

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

在这里输入图像描述

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

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

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


我个人认为让ViewModel引用存储库没有问题。 试图避免这将导致不必要的并发症。

在MVVM中,ViewModel通常是位于模型上方的“胶合”层,而存储库是模型的一部分(它是特定领域数据/逻辑的一部分)。 我的MVVM博客系列展示了我个人如何思考这个问题的良好形象:

MVVM图

通过将命令3放入虚拟机直接让虚拟机与存储库协同工作可能会比试图将其分离出来更清洁。


视图模型应该与业务层(域对象+域服务)通信,而不是直接与存储库通信。 更进一步说,这个通信应该通过命令完成。

所以你有了:

查看 - >查看模型 - >命令 - >域对象/域服务 - >存储库

除非你正在开发一个非常简单的CRUD应用程序......

链接地址: http://www.djcxy.com/p/56161.html

上一篇: WPF, MVVM, ICommand, and repositories

下一篇: WPF MVVM: ICommand Binding to controls