Installation¶
This guide shows how to reference the extensions from the default Jason Taylor Clean Architecture template layout.
Choose packages¶
| Package | Typical projects | Purpose |
|---|---|---|
CleanArchitecture.Extensions.Caching |
Application + Infrastructure | Cache abstractions, adapters, and query caching behavior. |
CleanArchitecture.Extensions.Multitenancy |
Application + Infrastructure | Core multitenancy abstractions, resolution, and pipeline behaviors. |
CleanArchitecture.Extensions.Multitenancy.AspNetCore |
Web/API | Middleware and endpoint enforcement for HTTP. |
CleanArchitecture.Extensions.Multitenancy.EFCore |
Infrastructure | EF Core filters, interceptors, and DbContext helpers. |
Install packages¶
Caching:
dotnet add src/Application/Application.csproj package CleanArchitecture.Extensions.Caching
dotnet add src/Infrastructure/Infrastructure.csproj package CleanArchitecture.Extensions.Caching
Multitenancy core:
dotnet add src/Application/Application.csproj package CleanArchitecture.Extensions.Multitenancy
dotnet add src/Infrastructure/Infrastructure.csproj package CleanArchitecture.Extensions.Multitenancy
ASP.NET Core adapter:
EF Core adapter:
dotnet add src/Infrastructure/Infrastructure.csproj package CleanArchitecture.Extensions.Multitenancy.EFCore
Register services¶
Each package provides an AddCleanArchitecture... extension method. For example:
builder.Services.AddCleanArchitectureCaching();
builder.Services.AddCleanArchitectureMultitenancy();
builder.Services.AddCleanArchitectureMultitenancyAspNetCore();
builder.Services.AddCleanArchitectureMultitenancyEfCore();
Tip: pass autoUseMiddleware: true to AddCleanArchitectureMultitenancyAspNetCore when you cannot modify Program.cs.
Prefer manual middleware wiring for claim- or route-based resolution so you can control authentication/routing order.
Add pipeline behaviors in Application:
builder.Services.AddMediatR(cfg =>
{
cfg.RegisterServicesFromAssemblyContaining<Program>();
cfg.AddCleanArchitectureCachingPipeline();
cfg.AddCleanArchitectureMultitenancyPipeline();
});
In the Jason Taylor template, register the multitenancy pipeline after authorization behaviors so authorization runs first.
Uninstall¶
dotnet remove src/Application/Application.csproj package CleanArchitecture.Extensions.Caching
dotnet remove src/Infrastructure/Infrastructure.csproj package CleanArchitecture.Extensions.Caching
Adjust for the package(s) you installed.