首页 > 解决方案 > 您在领域驱动设计中将 DbContext 放在哪里?

问题描述

我想在一个新项目中使用领域驱动设计。我的第一步是消除 DAL 项目(实体框架核心)专用的模型类,而是直接使用业务模型。

但是在这一步中,我遇到了循环依赖的问题,以及在哪里放置 DbContext 类。

假设我有两个项目——业务和数据。业务项目包含所有业务逻辑和相关实体模型。数据项目包含实体框架特定的东西——配置、迁移和 DbContext。

问题来自依赖关系。数据项目依赖于实体模型的业务项目(由配置和 DbContext 使用)。业务项目依赖于 DbContext 的数据项目,由业务逻辑使用。这个项目架构创建了一个依赖循环,我不知道如何打破。

我想到了几个(坏的)解决方案:

将这种类型的域驱动设计与实体框架一起使用时,您如何解决这种依赖循环?

标签: c#entity-frameworkentity-framework-coredomain-driven-design

解决方案


您应该考虑仅将域实体传递给持久层中的存储库,以便您拥有 3 层

-应用层(你调用的业务层。这是由协调服务组成的)

- 域层(域实体类所在的位置)

-持久层(实现存储库和持久性实体的位置。这是域到持久性模型之间发生映射的地方,反之亦然)

您的存储库接口应该在域层中定义,而在持久层中它引用域层)


推荐阅读