using Deal.SharedKernel.Tenants.Abstractions; using Deal.SharedKernel.Tenants.Models; namespace Deal.Infrastructure.Data; /// /// Контекст тенанта на AsyncLocal: пробрасывается через весь запрос. /// public sealed class TenantContext : ITenantContext { private static readonly AsyncLocal Current = new(); public TenantId? TenantId => Current.Value; public bool HasTenant => Current.Value is not null; public string? SchemaName => Current.Value?.SchemaName; /// public void SetTenant(TenantId tenantId) => Current.Value = tenantId; /// public void Reset() => Current.Value = null; }