![](/img/trans.png)
[英]EF Core 3.0 .Include() chain taking ~5-10x longer than 2.2
[英]Entity Framework Core 3.0 .Include call taking 10x more time
我在网上查看了几乎所有内容,但无法在合理的时间内完成。
Entity Framework Core 3.0 .Include
调用比单独调用各个表然后在 C# 代码中映射它们所花费的时间多 10 倍。
我有两个表product
和productimages
,其中 product productimages 是产品内部的集合。
现在,当我使用.Include
function 链接调用时,从 DB 中获取记录需要很长时间:
products = _context.ProductUploadQueue
.Include(x => x.ProductUploadQueueImage)
.Where(x => x.ClientId == clientId && x.PalletId == palletID)
.ToList();
但是如果我在单独调用两个表而不链接 Include 调用时做同样的事情,它会加速一切:
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();
我怎样才能加快速度?
我怎样才能加快速度?
你刚刚发现了如何。 Go 返回并查看g
,您会发现所有productUploadQueueImage
导航属性都已填充。 当您运行第二个查询时,更改跟踪器将在加载第二个集合时修复任何关系。
在 EF Core 3 之前,可以在多次往返中执行包含查询,就像您在此处所做的那样。 生成包含多个表的单个查询通常要慢得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.