實體框架核心很慢 - 如何讓它更快?

c# database entity-framework-core postgresql

從數據庫中檢索記錄並將其分配給對象。

private readonly ApplicationDbContext _context;
var itemsData = _context.Items;

for (int i = 0; i < itemsData.Count(); i++)
{
    _Response.Items.Add(new Models.Items
        {
            Name = itemsData.ToList()[i].Name,
            ....
            Created = (DateTime)itemsData.ToList()[i].Created,
            Updated = (DateTime)itemsData.ToList()[i].Updated
        });
}

注意 :記錄少於1000條,並且已經顯而易見。

一般承認的答案

您在每次迭代時調用ToList ,每次迭代都會對數據庫執行SQL查詢。這樣做1000次,難怪它很慢。

只需調用ToList一次,然後foreach結果:

var itemsData = _context.Items.ToList();

foreach (var item in itemsData)
{
    _Response.Items.Add(new Models.Items
    {
        Name = item .Name,
        ....
        Created = (DateTime)item.Created,
        Updated = (DateTime)item.Updated
    });
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow