我在 WPF 应用程序中使用带有 EF 的 Prism 框架。
视图模型:
- 保留服务引用(由统一容器传递)。
服务:
- 正在为数据提供“高级”操作
- 保留对 Repository 的引用,它为数据库提供基本的 CRUD 操作(每个存储库一个表)。
存储库:
- 存储库中的每个方法都使用“使用”模式,我在其中使用短暂的对象上下文。
这就是我卡住的地方:在对象上下文被处理后,我不能再使用映射的属性。我的数据库模型很复杂(许多相关的表),并且在检索数据时许多 .Include() 调用会使代码变脏。
在阅读了几个线程之后,我发现“工作单元”模式可能是我需要的。
我的问题来了:
谁保留工作单元的参考(以及上下文)?如果我选择每个视图方法的上下文,viewModel 应该有上下文引用。那么如何将工作单元注入我的服务呢?或者我应该在 ViewModel 中创建新的 Service 实例并在构造函数参数中传递上下文?