【ABP踩坑記】倉儲 WithDetailsAsync 配置


使用Abp封裝的CrudAppService中的 GetAsync 獲取聚合根中Details為null。

 

查看源碼(EfCoreRepository.cs)后發現倉儲方法是有WithDetailsAsync和WithDetails方法

[Obsolete("Use WithDetailsAsync")]
public override IQueryable<TEntity> WithDetails()
{
  if (AbpEntityOptions.DefaultWithDetailsFunc == null)
  {
    return base.WithDetails();
  }

  return AbpEntityOptions.DefaultWithDetailsFunc(GetQueryable());
}

public override async Task<IQueryable<TEntity>> WithDetailsAsync()
{
  if (AbpEntityOptions.DefaultWithDetailsFunc == null)
  {
    return await base.WithDetailsAsync();
  }

  return AbpEntityOptions.DefaultWithDetailsFunc(await GetQueryableAsync());
}

 

從源碼中看出有個配置項 AbpEntityOptions.DefaultWithDetailsFunc

 配置方法:

EntityFrameworkCoreModule.cs

public override void ConfigureServices(ServiceConfigurationContext context)
{
  context.Services.AddAbpDbContext<ERPDbContext>(options =>
  {
    options.AddDefaultRepositories(includeAllEntities: true);
  });

  Configure<AbpDbContextOptions>(options =>
  {
    options.UseSqlServer();
  });

  Configure<AbpEntityOptions>(options =>
  {
    options.Entity<DemandOrder>(DemandOrderOptions =>
    {
      DemandOrderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Items);     });   });
}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM