我希望在我的主页上列出可用的租户(在总部基地框架生成的Angular应用程序上)。列表中的每个项目都应该有一个指向该租户的链接。
第一个问题是我找不到应该返回租户的服务:我尝试了AbpTenantService和MultiTenancyService。
在ASP.NET核心主机上生成了一个终结点(GET /api/multi-tenancy/tenants),但我似乎在TypeScript中找不到代理。
我确实确保运行了abp generate-proxy。
辅助问题是,将__tenant={tenant_name}或__tenant={tenant_id}传递给查询字符串似乎无法更改租户。
根据documentation,默认模板包括查询字符串承租人解析器:QueryStringTenantResolveContributor。
发布于 2021-01-24 03:09:54
下面是如何获得租户(从主机端)
public class GetTenantsInput : PagedAndSortedResultRequestDto
{
public string Filter { get; set; }
} public class SaasTenantDto : ExtensibleEntityDto<Guid>
{
public string Name { get; set; }
}public class EfCoreTenantRepository : EfCoreRepository<ISaasDbContext, Tenant, Guid>, ITenantRepository
{
public EfCoreTenantRepository(IDbContextProvider<ISaasDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public virtual async Task<List<Tenant>> GetListAsync(
string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.IncludeDetails(includeDetails)
.WhereIf(
!filter.IsNullOrWhiteSpace(),
u =>
u.Name.Contains(filter)
)
.OrderBy(sorting ?? nameof(Tenant.Name))
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<long> GetCountAsync(string filter = null, CancellationToken cancellationToken = default)
{
return await this
.WhereIf(
!filter.IsNullOrWhiteSpace(),
u =>
u.Name.Contains(filter)
).CountAsync(cancellationToken: cancellationToken);
}
[Obsolete("Use WithDetailsAsync method.")]
public override IQueryable<Tenant> WithDetails()
{
return GetQueryable().IncludeDetails();
}
public override async Task<IQueryable<Tenant>> WithDetailsAsync()
{
return (await GetQueryableAsync()).IncludeDetails();
}
}public virtual async Task<PagedResultDto<SaasTenantDto>> GetListAsync(GetTenantsInput input)
{
var count = await TenantRepository.GetCountAsync(input.Filter);
var list = await TenantRepository.GetListAsync(
input.Sorting,
input.MaxResultCount,
input.SkipCount,
input.Filter
);
var tenantDtos = ObjectMapper.Map<List<Tenant>, List<SaasTenantDto>>(list);
return new PagedResultDto<SaasTenantDto>(
count,
tenantDtos
);
}https://stackoverflow.com/questions/65798088
复制相似问题