| name | abp-dependency-rules |
| description | ABP Framework v10.x (10.4/10.5) layer dependency rules quick reference: layer direction, project reference matrix, anti-patterns (no DbContext in Application, don't expose IQueryable, don't return entity as DTO). Use when you need layer architecture/dependency rules in ABP. |
ABP Framework — Dependency Rules
ABP v10.x layer dependency guardrails.
Trigger
"ABP layer architecture", "dependency rules", "layer dependency", "project references", "where is DbContext".
Principles
- Domain logic does not depend on infrastructure (no DbContext in Domain/Application)
- Use abstractions (interfaces)
- Upper layer → lower layer (never the reverse)
- Data access through the repository
Layers & References
Domain.Shared → Domain → Application.Contracts → Application → HttpApi → Host
↑ EntityFrameworkCore/MongoDB (only Host references it)
| Project | References |
|---|
| Domain.Shared | — |
| Domain | Domain.Shared |
| Application.Contracts | Domain.Shared |
| Application | Domain, Contracts |
| EF Core/MongoDB | Domain |
| HttpApi | Contracts |
❌ / ✅
private readonly MyDbContext _db;
private readonly BookAppService _svc;
private readonly IBookRepository _repo;
private readonly IBookAppService _svc;
Repository: interface → Domain, impl → EfCoreRepository<...> / MongoDbRepository<...> (Data layer).
Common Violations
| Violation | Solution |
|---|
| DbContext in Application | Repository |
| Returning entity as DTO | Map to a DTO |
IQueryable in interface | Return a concrete type |
| App service call across modules | Event/domain |
Related