首页 > 其他分享 >Abp.VNext-显示加载实体导航属性

Abp.VNext-显示加载实体导航属性

时间:2024-11-19 17:41:30浏览次数:1  
标签:VNext orderId await Abp OrderDetails var Include queryable 加载

方式一:为实体配置默认导航并设置includeDetails属性为true
[DependsOn(typeof(AbpEntityFrameworkCoreMySQLModule))]
public class EntityFrameworkCoreModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        Configure<AbpEntityOptions>(options =>
        {
            options.Entity<Order>(x =>
            {
                x.DefaultWithDetailsFunc = query => query.Include(o => o.OrderDetails);
            });
        });
    }
}
//第二个参数是includeDetails,不填默认是true,若为false则不会加载
var order = await _orderRepository.FindAsync(orderId);
或者
var order = await _orderRepository.FindAsync(orderId,true);
或者
var order = await _orderRepository.GetAsync(orderId);
或者
var order = await _orderRepository.GetAsync(orderId,true);
方式二:Include
var dbContext = await GetDbContextAsync();

//方式一
//var queryable = dbContext.Set<Order>().Include(x => x.OrderDetails);
//方式二
var queryable = (await GetQueryableAsync()).Include(x => x.OrderDetails);
//方式三
var queryable = (await this.WithDetailsAsync()).Include(x => x.OrderDetails);


return await queryable.WhereIf(orderId.isNotNull(), x =>x.Id==orderId).ToListAsync();
方式三:withDetailAsync
var queryable = await _orderRepository.WithDetailsAsync(x => x.OrderDetails);
var order = queryable.Where(x => blogIds.Contains(x.Id)).FirstOrDefault(); 
var queryable = await WithDetailsAsync(x => x.OrderDetails);
return await queryable.WhereIf(orderId.isNotNull(), x =>x.Id==orderId).ToListAsync();
扩展1:单个实体加载多个导航属性
var queryable = await _orderRepository.WithDetailsAsync(x => x.OrderDetails1,x=>x.OrderDetails2);
var queryable = (await this.WithDetailsAsync()).Include(x => x.OrderDetails1).Include(x => x.OrderDetails2);
扩展2:单个实体加载带有子孙的导航属性
var queryable = (await this.WithDetailsAsync()).Include(x => x.OrderDetails1).ThenInclude(x => x.Goods1);

标签:VNext,orderId,await,Abp,OrderDetails,var,Include,queryable,加载
From: https://www.cnblogs.com/mingcore/p/18555313

相关文章

  • Abp.VNext-数据过滤
    如何实现软删除数据查询过滤实体类继承ISoftDelete接口后,查询获取到的返回结果将不包含已删除的数据。如何关闭软删除数据过滤全局方式关闭软删除数据过滤EntityFrameworkCoreModule模块类中使用。[DependsOn(typeof(AbpEntityFrameworkCoreMySQLModule))]publicclassEnti......
  • Abp.VNext-统一配置UTC时区时间
    PreConfigureServices方法重载并添加如下代码[DependsOn(typeof(AbpAutofacModule),typeof(AbpAspNetCoreMvcModule),)]publicclassApiHostModule:AbpModule{publicoverridevoidPreConfigureServices(ServiceConfigurationContextcontext)......
  • vite4+vue2+vant2+less构建项目,按需加载定制主题配置说明
    步骤1:安装vant2、consola、less、vite-plugin-style-import说明:因为vant2需要consola,所以必装;安装加载vant组件样式,必装:vite-plugin-style-import,版本注意是2.0以上 步骤2:vite.config.js配置://vite.config.jsimportfsfrom'node:fs';importpathfrom'path';i......
  • Java的类加载
    1.加载的时机(加载阶段虚拟机需要完成3件事)a.通过一个类的全限定名来获取定义此类的二进制字节流 b.将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构c.在内存中生成一个代表这个类的java.lang.Class对象,作业方法区这个类的各种数据的访问入口2.验......
  • 调整方法和相关的注册表项,能帮助你加速 MS Edge 的加载:增强 Google Chrome 浏览器在视
    在Windows11系统中,通过调整MicrosoftEdge浏览器的注册表设置,你可以对其性能进行优化,尤其是提高启动速度和加载速度。以下是一些常见的调整方法和相关的注册表项,能帮助你加速MSEdge的加载:1. 禁用硬件加速硬件加速可能会影响性能,尤其是在资源较少的设备上。如果你遇到性......
  • springboot扩展配置文件自动加载
    importcn.hutool.core.collection.ListUtil;importcn.hutool.core.convert.Convert;importcn.hutool.core.io.FileUtil;importcn.hutool.core.text.CharSequenceUtil;importcn.hutool.setting.yaml.YamlUtil;importlombok.extern.slf4j.Slf4j;importorg.springfr......
  • 网页中加载 SVG 的七大方式
    一、直接使用<img>标签加载外部SVG文件<imgsrc="path/to/image.svg"alt="描述文字"><!--若多个svg格式的img的宽高设定为百分百高度,容易会造成首屏加载svg的高度为0-->优点:简单易用:与加载其他图片格式(如PNG、JPEG)相同。浏览器支持良好:现代浏览器普遍支持。可缓存:SVG......
  • H.265流媒体播放器EasyPlayer.js无插件H5播放器关于页面首次加载超时检测
    EasyPlayer.js网页直播/点播播放器是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版以及js版,其中js版本作为网页播放器,受到了用户的广泛使用。在功能上,EasyPlayer.js播放器支持直播、点播、录像、快照截图......
  • unity3d————场景异步加载
    总结本文介绍了Unity中场景切换的两种方法:同步切换和异步切换。同步切换在切换场景时会删除当前场景的所有对象并加载下一个场景的信息,可能导致卡顿。因此,异步切换被引入来解决这个问题。异步切换有两种实现方式:通过事件回调函数和通过协程。通过事件回调函数实现异步加载代......
  • 如何在原生鸿蒙中进行RN热加载
    一、背景在上一篇博客中,我分享了将RN的bundle包在原生鸿蒙开发中进行使用。但是如果我们在实际的开发过程中,每次修改完代码都需要打包,然后重新运行原生项目的话效率就有点太低了。原生鸿蒙支持RN的热加载,每次改完代码直接ctrl+s即可,改动后的代码会自动同步到手机上。除此之外,还......