ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【ABP踩坑记】仓储 WithDetailsAsync 配置

2021-04-09 14:05:23  阅读:635  来源: 互联网

标签:AbpEntityOptions 坑记 return WithDetailsAsync DefaultWithDetailsFunc ABP null opti


使用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);
    });
  });
}    

 

标签:AbpEntityOptions,坑记,return,WithDetailsAsync,DefaultWithDetailsFunc,ABP,null,opti
来源: https://www.cnblogs.com/rxiang/p/14636795.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有