TinySaas is a C# library for building multitenant applications with .NET Core 3.0+
- Shared services
- Per-tenant services
- Schema per-tenant (Data Isolation)
- Database per-tenant (Data Isolation)
- Shared database (Data Isolation)
- Shared options
- Per-tenant options
- Shared Authentication and Authorization
- Per-tenant Authentication and Authorization
- Add dependency to CodEaisy.TinySaas from Nuget
dotnet add package CodEaisy.TinySaas.AspNetCore --version 1.0.0
-
In
Startup.cs
, add the following inside theConfigureServices
method.public void ConfigureServices(IServiceCollection services) { // register all global singleton services here, and also dependencies for your TenantStore and ResolutionStrategy if any // ... // OPTION 1 services.AddMultitenancy<Tenant, TenantStore<Tenant>, TenantResolutionStrategy>(); // OPTION 2 // uses default `CodEaisy.TinySaas.Model.TinyTenant` as tenant model services.AddMultitenancy<TenantStore<TinyTenant>, TenantResolutionStrategy>(); // ... // services.AddControllers(); }
Then, add the following in the
Configure
methodpublic void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // enable multitenant support, with missing tenant handler and tenant container // OPTION 1 // missing tenant handler has a dependency that can be provided immediately app.UseMultitenancy<Tenant, MissingTenantHandler, MissingTenantOptions>(missingTenantOptions); // OPTION 2 // missing tenant handler does not have a dependency or dependency is already registered in services app.UseMultitenancy<Tenant, MissingTenantHandler>(); // OPTION 3 // Use `SimpleTenant` as tenant model, and missing tenant handler does not have a dependency or dependency is already registered in services app.UseMultitenancy<TMissingTenantHandler>() // ... }
-
In
Program.cs
, add the following in theCreateHostBuilder
method.public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) // OPTION 1: add multitenant support via TenantStartup class .ConfigureMultitenancy<TenantStartup, Tenant>(); // OPTION 2: add multitenant support via static method .ConfigureMultitenancy<Tenant>(ClassName.StaticMethodName);
NOTE:
Tenant
must implementCodEaisy.TinySaas.Interface
ITenant
.TenantStore
must implementCodEaisy.TinySaas.Interface.ITenantStore
.TenantResolutionStrategy
must implementCodEaisy.TinySaas.Interface.ITenantResolutionStrategy
respectively.TenantStartup
must implementIMultitenantStartup
ClassName.StaticMethodName
must be of typeSystem.Action<TTenant, Autofac.ContainerBuilder>
whereTTenant
implementsITenant
ASP.NET Core 3.1+
Learn about the latest improvements.
Gunnar Peipman and Michael McKenna for their awesome works on Saas in ASP.NET Core.
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.