[英]ABP and .Net 5 problem retrieving records
我正在使用 ABP 6.5.0。 我有一個應用服務,它檢索所有運行 GetAll 方法的租戶。
我已經覆蓋了 CreateFilteredQuery,它運行以下代碼:
protected override IQueryable<Tenant> CreateFilteredQuery(PagedBusinessResultRequestDto input)
{
IQueryable<Tenant> result = null;
result = Repository
.GetAll()
.Include(b => b.Branches)
.ThenInclude(bc => bc.BranchCategories)
.WhereIf(!input.Keywords.IsNullOrWhiteSpace(), x => x.Name.Contains(input.Keywords) || x.TenantDescription.Contains(input.Keywords))
.Where(x => x.Id != AppConsts.DefaultTenantId && x.IsActive && x.IsValid);
return result;
}
當我調用 Rest API (Business.GetAll) 時,會檢索租戶記錄,但是當用戶登錄到應用程序時,這些記錄不包括Branches和BrachCategories 。 但是,當用戶未登錄應用程序時,它會按預期工作。
我發現一些有趣的事情是調試代碼。 如果我在CreateFilteredQuery方法完成執行之前查看result
變量,則可以正確檢索分支和branchCategories記錄。 但是,如果我不查看result
變量,則不會檢索branch和branchCategories記錄。
知道這里會發生什么嗎?
提前感謝。
我解決了這個問題:
public override async Task<PagedResultDto<BusinessDto>> GetAllAsync(PagedBusinessResultRequestDto input)
{
using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant))
{
return await base.GetAllAsync(input);
}
}
我試過這個其他代碼但它沒有工作,但由於某種原因它不正確,我認為 Abp 自動應用過濾器result
變量。
public override Task<PagedResultDto<BusinessDto>> GetAllAsync(PagedBusinessResultRequestDto input)
{
Task<PagedResultDto<BusinessDto>> result;
using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant))
{
result = base.GetAllAsync(input);
}
return result;
}
感謝大家的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.