abp-dependency-ruleslisted
Install: claude install-skill burakdmir/abp-skills
# ABP Framework — Dependency Rules
ABP v10.4 layer dependency guardrails.
## Trigger
"ABP layer architecture", "dependency rules", "layer dependency", "project references", "where is DbContext".
## Principles
1. Domain logic does not depend on infrastructure (no DbContext in Domain/Application)
2. Use abstractions (interfaces)
3. Upper layer → lower layer (never the reverse)
4. 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 |
## ❌ / ✅
```csharp
// ❌ DbContext in Application / ❌ concrete AppService in HttpApi / ❌ Domain → AppService
private readonly MyDbContext _db; // ❌
private readonly BookAppService _svc; // ❌ use the interface
// ✅
private readonly IBookRepository _repo; // App/Domain
private readonly IBookAppService _svc; // Controller
```
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