繁体   English   中英

Entity Framework Core 3.0.Include 调用时间增加 10 倍

[英]Entity Framework Core 3.0 .Include call taking 10x more time

我在网上查看了几乎所有内容,但无法在合理的时间内完成。

Entity Framework Core 3.0 .Include调用比单独调用各个表然后在 C# 代码中映射它们所花费的时间多 10 倍。

我有两个表productproductimages ,其中 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM