簡體   English   中英

ABP 和.Net 5 檢索記錄的問題

[英]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) 時,會檢索租戶記錄,但是當用戶登錄到應用程序時,這些記錄不包括BranchesBrachCategories 但是,當用戶未登錄應用程序時,它會按預期工作。

我發現一些有趣的事情是調試代碼。 如果我在CreateFilteredQuery方法完成執行之前查看result變量,則可以正確檢索分支branchCategories記錄。 但是,如果我不查看result變量,則不會檢索branchbranchCategories記錄。

知道這里會發生什么嗎?

提前感謝。

我解決了這個問題:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM