gpt4 book ai didi

linq - EF core 2第一次查询慢

转载 作者:行者123 更新时间:2023-12-02 00:36:09 26 4
gpt4 key购买 nike

我在我的项目中使用 EF core 2 作为 ORM。我在执行此查询时遇到了这个问题:

 var query = (from droitsGeo in _entities.DroitsGeos
join building in _entities.Batiments
on droitsGeo.IdPerimetre equals building.IdBatiment
where droitsGeo.IdUtilisateur == idUser &&
droitsGeo.IdClient == idClient &&
building.Valide == true &&
droitsGeo.IdNiveauPerimetre == geographicalLevel
orderby sort ascending
select new GeographicalModel
{
Id = building.IdBatiment,
IdParent = building.IdEtablissement,
Label = building.LibBatiment,
});

第一次执行大约需要 5 秒,第二次执行不到 1 秒,如下所示:

首次执行查询:

已用时间 EF:00:00:04.8562419

首次执行查询后:

已用时间 EF:00:00:00.5496862

已用时间 EF:00:00:00.6658079

已用时间 EF:00:00:00.6176030

我使用存储过程得到了相同的结果。

当我在 SQL Server 中执行 EF 生成的 SQL 查询时,不到一秒就返回结果。

EF Core 2 有什么问题或者我错过了配置中的某些内容吗?

最佳答案

默认情况下,EF 会跟踪您运行查询的所有实体。

当您第一次运行它时,轨道更改机制就会启动......这就是为什么它需要更长的时间。

您可以避免这种情况,尤其是在编写查询时使用 .AsNoTracking() 检索集合时。

看一下:

var items = DbContext.MyDbSet
.Include(SecondObject)
.AsNoTracking()
.ToList();

关于linq - EF core 2第一次查询慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50913897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com