首页 > 其他分享 >关于EF延时加载的面试题

关于EF延时加载的面试题

时间:2024-04-02 12:56:07浏览次数:22  
标签:面试题 return IQueryable EF IEnumerable private 延时 data Id

   public async Task<ActionResult> GetData()
   {
       var data = (from leftdata in GetLeft()
                   join rightdata in GetRight() on leftdata.Id equals rightdata.Id into tempdata
                   from matchdata in tempdata.DefaultIfEmpty()
                   select matchdata).ToList();
       return Ok(data);
   }

   
   private IEnumerable<YourModel> GetLeft()
   {
       return YourDbContext.YourModels.Where(c=>c.Id==1);
   }
   private IEnumerable<YourModel> GetRight()
   {
       return from data in YourDbContext.YourModels
              select data;
   }

上面代码调用GetData()查询了几次数据库?

如果换成IQueryable又如何

 public async Task<ActionResult> GetData()
 {
     var data = (from leftdata in GetLeft()
                 join rightdata in GetRight() on leftdata.Id equals rightdata.Id into tempdata
                 from matchdata in tempdata.DefaultIfEmpty()
                 select matchdata).ToList();
     return Ok(data);
 }

 
 private IQueryable<YourModel> GetLeft()
 {
     return YourDbContext.YourModels.Where(c=>c.Id==1);
 }
 private IQueryable<YourModel> GetRight()
 {
     return from data in YourDbContext.YourModels
            select data;
 }

由于IEnumerable和IQueryable的特性,我原本的想法是使用IEnumerable一共查询了3次数据库,使用IQueryable查询了一次数据库,最后实践发现无论是那种方式都只查询了一次数据库

 

标签:面试题,return,IQueryable,EF,IEnumerable,private,延时,data,Id
From: https://www.cnblogs.com/daiwk/p/18110339

相关文章

  • 论文阅读RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection
    文章目录RangeDet:InDefenseofRangeViewforLiDAR-based3DObjectDetection问题笛卡尔坐标结构图Meta-KernelConvolutionRangeDet:InDefenseofRangeViewforLiDAR-based3DObjectDetection论文:https://arxiv.org/pdf/2103.10039.pdf代码:https://......
  • EF Core – Owned Entity Types & Complex Types
    前言EFCore8.0推出了ComplexTypes,这篇要来介绍一下。由于它和 OwnedEntityTypes傻傻分不清楚,加上我之前也没有写过 OwnedEntityTypes的文章,所以这篇就一起介绍呗。 OwnedEntityTypesOwnedEntityTypes本质上任然属于一种EntityTypes,只是它有一些潜规则,所......
  • 2024最新一线互联网大厂常见高并发面试题解析
    面试官:临界区是什么?答:临界区用来表示一种公共资源或者说是共享资源,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。比如,在一个办公室里有一台打印机,打印机一次只能执行一个任务。如果小王和小明同时需要打......
  • "sideEffects": [ "dist/*", "esm/**/style/*", "lib/**/
    这段配置出现在一个软件包的package.json文件中,具体是"sideEffects"字段。这个字段用于告知打包工具(如Webpack、Rollup等)哪些模块或文件可能存在副作用(sideeffects),以便在进行TreeShaking(摇树优化)时做出正确决策。TreeShaking是一种优化技术,旨在在打包过程中去除那些在......
  • Java面试题-12Zookeeper
    1、ZK节点数据Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用......
  • 前端面试题【笔记】
    1、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20varreg=/^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;//定义RegExp对象,大括号表示重复次数4-19次 reg.test("a1a__a1a__a1a__a1a__");//检查一个字符串中是否存在创建RegExp对象实例时所指定......
  • EF Core – Table / Entity Splitting
    参考Docs– Advancedtablemapping TableSplittingTableSplitting指的是把多个Entity映射到同一个Table。Whentouseit?假设我们有一个OrderEntity,Order有很多信息:CustomerInfo,ShippingInfo,PaymentInfo,TotalAmount等等等。如果把所有信息都写进Orde......
  • QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题
    在Python中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是用于创建对象副本的两种不同方式。浅拷贝是创建一个新的对象,该对象与原始对象的内容相同(包括内部嵌套对象的引用),但是它们指向相同的内存地址。换句话说,浅拷贝创建了一个对象的表面副本,而不是递归复制所有嵌套对象。当原始对......
  • 微服务篇---springcloud高频面试题(2)☁️
    SpringCloud项目中有没有做过限流?怎么做的?Nginx限流-控制速率Nginx限流-控制连接数......
  • EF Core – 大杂烩
    前言记入一些零零碎碎的知识。 ShadowProperties参考:Docs– ShadowandIndexerPropertiesShadowProperty指的是那些在数据库有Column但是在EntityClass却没有Property的Property。举例publicclassProduct{publicintId{get;set;}publicstr......