fix: tenants 列表查询避免 DbContext 并发
This commit is contained in:
@@ -35,16 +35,14 @@ public sealed class SearchTenantsQueryHandler(ITenantRepository tenantRepository
|
||||
|
||||
// 3. (空行后) 批量查询订阅与实名资料(避免 N+1)
|
||||
var tenantIds = tenants.Select(x => x.Id).ToArray();
|
||||
var subscriptionsTask = tenantRepository.GetSubscriptionsAsync(tenantIds, cancellationToken);
|
||||
var verificationsTask = tenantRepository.GetVerificationProfilesAsync(tenantIds, cancellationToken);
|
||||
await Task.WhenAll(subscriptionsTask, verificationsTask);
|
||||
var subscriptions = await tenantRepository.GetSubscriptionsAsync(tenantIds, cancellationToken);
|
||||
var verifications = await tenantRepository.GetVerificationProfilesAsync(tenantIds, cancellationToken);
|
||||
|
||||
// 4. (空行后) 构建订阅与实名资料映射
|
||||
var subscriptionByTenantId = (await subscriptionsTask)
|
||||
var subscriptionByTenantId = subscriptions
|
||||
.GroupBy(x => x.TenantId)
|
||||
.ToDictionary(x => x.Key, x => x.FirstOrDefault());
|
||||
var verificationByTenantId = (await verificationsTask)
|
||||
.ToDictionary(x => x.TenantId);
|
||||
var verificationByTenantId = verifications.ToDictionary(x => x.TenantId);
|
||||
|
||||
// 5. (空行后) 映射 DTO(带订阅与认证)
|
||||
var result = new List<TenantDto>(tenants.Count);
|
||||
|
||||
Reference in New Issue
Block a user