Clean架构下ASP.NET Core API的DbContext注入及层级引用问题
关于DbContext分层依赖的问题解答
项目分层背景
- Domain项目:包含实体类(Entities)
- BusinessLogic项目:包含业务功能(Feature)
- Infrastructure项目:存放DbContext
- API项目:包含控制器(Controllers)
1. Infrastructure项目是否需要引用Domain项目以将Entities添加到DbContext?
是的,必须引用。
DbContext的核心作用是将领域实体映射到数据库表,你需要在DbContext中声明DbSet<Entity>属性,或是在OnModelCreating方法中配置实体映射——这些操作都直接依赖Domain项目里的实体类类型。如果不引用Domain项目,Infrastructure根本无法识别和使用这些实体,也就无法完成DbContext的配置工作。
2. 基础设施层能否跨一层访问领域层?
完全可以,这符合分层架构的设计逻辑。
在常规分层架构中,依赖方向是外围层依赖核心层:Domain作为核心领域层,定义了业务的核心实体与规则;Infrastructure作为外围的持久化实现层,本职就是为Domain提供数据持久化能力,直接依赖Domain是合理的。这不属于“跨层违规”,反而如果让Domain依赖Infrastructure,才会违反依赖倒置原则,导致核心层被外围实现绑定,降低代码的可维护性与可扩展性。
内容的提问来源于stack exchange,提问作者Ronald Abellano
相关产品推荐
相关产品推荐

