【发布时间】:2020-01-21 06:13:21
【问题描述】:
最近我发现以下方法对我从事的许多项目都很有效。 然而问题是,我读到 ef core DbContext 本身就是一个 UoW,我不应该创建自己的 UoW 和存储库。但在这种情况下,我无法从我的应用程序逻辑层中抽象出我的持久层。
TL;DR 问题是: 是否可以不拥有自己的存储库或拥有 UoW,并且仍然遵循提到的架构,将 DbContext 作为 UoW?
我的架构如下:
第 1 层(最内层): 聚合、实体、POCO 域类、值对象
第 2 层: 域服务
第 3 层: 应用程序服务(CQRS 命令、查询、处理程序)和存储库接口
4A 层:(持久层) 存储库实现(此处注入 DbContext) EF Core 映射(ORM 映射)
第 4B 层: Asp MVC API(DI在这里注册)
API 的控制器只是发出命令和查询(通过 MediatR)。
上述方法的优点是应用程序核心(第 1、2 和 3 层)完全从持久性中抽象出来。 缺点是你真的要自己写Repositories。
这是正确的方法吗?还是我错过了什么?
【问题讨论】:
-
这个问题很宽泛且基于观点,它不适合 Stack Overflow。此外,它还引发了一场在其他网络资源中已有充分报道的旧辩论。
标签: entity-framework domain-driven-design cqrs onion-architecture