7

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

在此处输入图像描述

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

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

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

4

2 回答 2

10

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

在 MVVM 中,ViewModel 通常是位于模型之上的“粘合”层——而存储库是模型的一部分(它是特定领域数据/逻辑的一部分)。我关于 MVVM 的博客系列很好地展示了我个人对此的看法:

MVVM 图

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

于 2012-12-13T20:05:43.680 回答
0

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

所以你有了:

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

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

于 2017-01-03T15:07:29.140 回答