在 multi-tenant 应用中,租户名称显示为空白

In a multi-tenant app, the tenant name shows as blank

在 ABP v4.4 ApplicationService 中,我有一个 using() 块更改为另一个租户以对该租户内的用户帐户执行一些操作。

租户更改正常进行,CurrentTenant object 显示正确的 ID,尽管 CurrentTenant.Name 属性 显示 null 值。包括用户帐户操作在内的其他一切都工作正常,所以实际上只是租户名称没有显示,我需要在此块中访问它。

在数据库中,租户名称值被指定为 MY TENANT,当通过 CurrentTenant.Name 访问时实际上不应该是 null(下面的屏幕截图显示了相应的租户 ID)。

知道这里出了什么问题吗?我在这里能想到的唯一解决方法是使用 ITenantRepository 从感觉不对的数据库中获取值。

调用时传递名字CurrentTenant.Change如果你想设置它:

var tenant = await _tenantRepository.GetAsync(Guid.Parse(tenantId));

using (CurrentTenant.Change(tenant.Id, tenant.Name))
{
    var tenantName = CurrentTenant.Name;
    // ...
}

CurrentTenant.Change 简单地将给定的 idname 设置为当前范围:

public IDisposable Change(Guid? id, string name = null)
{
    return SetCurrent(id, name);
}

private IDisposable SetCurrent(Guid? tenantId, string name = null)
{
    var parentScope = _currentTenantAccessor.Current;
    _currentTenantAccessor.Current = new BasicTenantInfo(tenantId, name);
    return new DisposeAction(() =>
    {
        _currentTenantAccessor.Current = parentScope;
    });
}

参考:https://github.com/abpframework/abp/blob/9c3b34067524b852c9eaf497728409d6f5e08ec4/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs#L21-L34