4

我目前正在 WPF 中学习 MVVM。我正在使用 Code First 方法创建一个包含实体框架的应用程序。我的项目的正确结构应该是什么?

MVVM 有这个结构

Views 
ViewModels
Model 

我目前的计划是将我的 POCO 放入 Model 文件夹中。我应该把继承自 DbContext 类的类放在哪里?

4

2 回答 2

4

MVVM 本身并没有指定服务基础架构。虽然您的 POCO 域应保留在“模型”目录中,但 MVVM 实现不应该知道 DbContext。

换句话说,不应该有一个派生自 DbContext 的类。

我通常通过 ViewModelProvider 构造来提供这种类型的功能,该构造将“实际”模型从 ViewModel 实现中抽象出来。这有助于更轻松地模拟等。所有具体的 viewModel 实现都应该通过这个抽象来“提供”。

于 2012-08-10T22:43:37.270 回答
0

Models、Views 和 ViewModels 存储桶实际上只是应用程序的层。它们的实际位置无关紧要,只要它们之间的交互不违反 MVVM 模式即可。

也就是说,我倾向于遵循 ASP.NET MVC 和 T4Scaffolding NuGet 包设置的模式。安装该软件包后,您可以发出以下命令。

Scaffold Repository -ModelType Person

这将基于 Person 模型类为您搭建两个新类。

  • 模型\MyApplicationContext.cs
  • 模型\PersonRepository.cs

第一个只是您期望的标准 DbContext 类。您的 Views 或 ViewModles 不会直接与此类交互。存储库类提供了对上下文的抽象;这是你应该在层之间传递的那个。存储库也比 DbContaxt 更容易模拟,并且可以使用完全不同的技术(如 WCF 数据服务)轻松实现。

希望这个答案至少为您提供了一个很好的起点。

于 2012-08-10T23:15:15.010 回答