abp-multitenancylisted
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