gpt4 book ai didi

entity-framework - MVVM + Entity Framework 架构困惑

转载 作者:行者123 更新时间:2023-12-04 20:46:36 56 4
gpt4 key购买 nike

我在 WPF 应用程序中使用带有 EF 的 Prism 框架。

View 模型:

  • 保留服务引用(由统一容器传递)。

  • 服务:
  • 正在为数据提供“高级”操作
  • 保留对 Repository 的引用,它为数据库提供基本的 CRUD 操作(每个存储库一个表)。

  • 存储库:
  • 存储库中的每个方法都使用“使用”模式,我在其中使用短暂的对象上下文。

  • 这就是我卡住的地方:在对象上下文被处理后,我不能再使用映射的属性。我的数据库模型很复杂(许多相关的表),并且在检索数据时许多 .Include() 调用会使代码变脏。

    在阅读了几个线程之后,我发现“工作单元”模式可能是我需要的。

    我的问题来了:

    谁保留工作单元的引用(以及上下文)?
    如果我选择每个 View 方法的上下文,viewModel 应该有上下文引用。
    那么如何将工作单元注入(inject)我的服务呢?或者我应该在 ViewModel 中创建新的 Service 实例并在构造函数参数中传递上下文?

    最佳答案

    我们在一个项目中使用了类似的架构:

  • 每个 ViewModel 都有自己的 Service 对象,该对象被注入(inject)到构造函数中(至少是直接对应于 View 的顶层。一些分层 ViewModel 可能会重用其父级的 Service,但我们在这里保持简单)。
  • 默认情况下,每个服务操作都会创建一个新的上下文,但是...
  • 服务具有可以调用的 BeginContext 和 EndContext 方法
    由 ViewModels 保持上下文在多个操作中打开。

  • 这对我们来说效果很好。大多数情况下,我们在 View 打开时调用 BeginContext,在 View 关闭时调用 EndContext。

    关于entity-framework - MVVM + Entity Framework 架构困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17091046/

    56 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com