エンティティフレームワークのコアが遅い - どうすれば速くできますか?

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個未満のレコードがあり、すでにそれは気づいていません。

受け入れられた回答

毎回データベースに対してSQLクエリを実行するすべての反復でToListを呼び出しています。これを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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ