Skip to content

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:

dotnet add src/Web/Web.csproj package CleanArchitecture.Extensions.Multitenancy.AspNetCore

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.