首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EntityFrameworkCore3.0 .Include调用耗时10倍

EntityFrameworkCore3.0 .Include调用耗时10倍
EN

Stack Overflow用户
提问于 2020-06-06 20:49:11
回答 1查看 79关注 0票数 1

我在网上查看了几乎所有的东西,但无法在合理的时间内让它正常工作。

EntityFrameworkCore3.0 .Include调用比分别调用各个表并在C#代码中映射它们花费的时间多10倍。

我有两个表productproductimages,其中产品产品是产品内部的集合。

现在,当我用.Include函数链接调用时,从DB中获取记录需要花费很长时间:

代码语言:javascript
运行
复制
products = _context.ProductUploadQueue
               .Include(x => x.ProductUploadQueueImage)
               .Where(x => x.ClientId == clientId && x.PalletId == palletID)
               .ToList();

但是,如果在单独调用两个表而不是链接包含调用时执行相同的操作,则会加速所有操作:

代码语言:javascript
运行
复制
 var g = _context.ProductUploadQueue
      .AsNoTracking()
      .Where(x => x.ClientId == clientId && x.PalletId == palletID)
      .ToList(); 

 var hp = g.Select(x => x.Id); 

 var y = _context.ProductUploadQueueImage
      .Where(x => hp.Contains(x.ProductUploadQueueId))  
      .ToList();

我怎样才能加快速度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 20:54:58

我怎样才能加快速度?

你刚刚发现了。回头看看g,您会发现所有的productUploadQueueImage导航属性都已被填充。当您运行第二个查询时,Change Tracker将在加载第二个排序规则时修复任何关系。

在EF Core 3之前,包含查询可以在多次往返中执行,就像您在这里所做的一样。生成包含多个表的单个查询通常要慢得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62237870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档