Entity framework MVVM+;实体框架架构混乱
我正在WPF应用程序中使用带EF的Prism框架 视图模型:Entity framework MVVM+;实体框架架构混乱,entity-framework,mvvm,unit-of-work,objectcontext,Entity Framework,Mvvm,Unit Of Work,Objectcontext,我正在WPF应用程序中使用带EF的Prism框架 视图模型: 保留服务引用(通过unity容器传递) 服务: 正在为“高级”操作提供数据 保留对存储库的引用,它为数据库提供基本的CRUD操作(每个存储库一个表) 存储库: 存储库中的每个方法都使用“使用”模式,在这里我使用的是短期对象上下文 这就是我陷入困境的地方:在处理对象上下文之后,我无法再使用映射属性。我的数据库模型很复杂(有许多相关的表),检索数据时有许多.Include()调用会使代码变脏 在阅读了几个线程之后,我发现“工作
- 保留服务引用(通过unity容器传递)李>
- 正在为“高级”操作提供数据
- 保留对存储库的引用,它为数据库提供基本的CRUD操作(每个存储库一个表)李>
- 存储库中的每个方法都使用“使用”模式,在这里我使用的是短期对象上下文
那么,我如何将工作单元注入到我的服务中呢?或者我应该在ViewModel中创建新的服务实例并在构造函数参数中传递上下文吗?我们在项目中使用了类似的体系结构:
- 每个ViewModel都有自己的服务对象,该对象被注入到构造函数中(至少是与视图直接对应的顶级对象。一些分层ViewModel可能会重用其父级的服务,但让我们在这里保持简单)
- 默认情况下,每个服务操作都会创建一个新的上下文,但是
- 服务具有可以调用的BeginContext和EndContext方法 通过ViewModels在多个操作中保持上下文打开
这对我们来说非常有效。大多数情况下,我们在打开视图时调用BeginContext,在关闭视图时调用EndContext。最后,我用以下方法解决这个问题:打开视图时,ViewModel创建UnitOfWork对象,该对象由上下文和多个服务组成。同一工作单元中的服务注入了相同的上下文。关闭视图时,将处理工作单元。这个主题中的项目也很鼓舞人心。谢谢你,丹尼尔。