![](/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.