← ClaudeAtlas

abp-multitenancylisted

ABP Framework v10.4 multi-tenancy: tenant resolver, ICurrentTenant, IMultiTenant, database isolation, tenant-based data filtering. Use when working with SaaS, multi-tenancy, or tenant management in ABP.
burakdmir/abp-skills · ★ 10 · AI & Automation · score 77
Install: claude install-skill burakdmir/abp-skills
# ABP Framework — Multi-Tenancy ABP Framework v10.4 multi-tenancy (SaaS) guide. Tenant resolver, IMultiTenant, ICurrentTenant. ## Trigger - "ABP multi-tenancy" - "ABP tenant" - "ABP SaaS" - "ABP IMultiTenant" - "ABP ICurrentTenant" - "ABP tenant resolver" ## Configuration ```csharp Configure<AbpMultiTenancyOptions>(options => options.IsEnabled = true); ``` ## IMultiTenant Entity ```csharp public class Product : AggregateRoot<Guid>, IMultiTenant { public Guid? TenantId { get; set; } public string Name { get; set; } } ``` - `TenantId` is nullable — `null` = belongs to the Host - ABP automatically applies data filtering ## ICurrentTenant ```csharp CurrentTenant.Id // Guid? CurrentTenant.Name // string CurrentTenant.IsAvailable // bool // Changing the tenant (scoped) using (CurrentTenant.Change(tenantId)) { var count = await _productRepository.GetCountAsync(); } // Host context using (CurrentTenant.Change(null)) { } ``` ## Data Filter Disable ```csharp using (_dataFilter.Disable<IMultiTenant>()) { return await _productRepository.GetCountAsync(); // All tenants } ``` ## Tenant Resolvers Default order: CurrentUser → QueryString → Route → Header → Cookie ### Subdomain Resolver ```csharp Configure<AbpTenantResolveOptions>(options => { options.AddDomainTenantResolver("{0}.mydomain.com"); }); ``` ### Fallback Tenant ```csharp Configure<AbpTenantResolveOp