gpt4 book ai didi

.net - EF 4.3.1和EF 5.0 DbSet.Local比实际的数据库查询要慢

转载 作者:行者123 更新时间:2023-12-03 12:17:14 27 4
gpt4 key购买 nike

我有一个包含约16500个城市的表的数据库,以及该数据库的EF数据模型(数据库优先)。我用以下代码将它们预加载到内存中:

Db.Cities.Load()

...然后是时候使用它们了,我尝试了以下每个查询:
Dim cities() As String = Db.Cities.Select(Function(c) c.CityName).ToArray

Dim cities() As String = Db.Cities.Local.Select(Function(c) c.CityName).ToArray

第一个查询很快(大约10毫秒),但是第二个查询第一次运行大约需要2.3秒(尽管比第一个查询快)。

这没有任何意义,因为SQL Server Profiler会验证第一个查询是否命中了另一台计算机上的数据库,而第二个则没有!

我尝试关闭 Db.Configuration.AutoDetectChangesEnabled,并尝试预生成 View 。

我怎样做才能使 .Local更快? (并非所有运行此应用程序的客户端都将位于快速局域网上。)

最佳答案

为什么不简单地从第一个查询中保存字符串列表,然后使用它呢?

List<string> cities = db.Cities.Select( x=>x.CityName).ToList();

由于Select,Local可能会变慢,因为Select可能正在做一些一致性检查。

关于.net - EF 4.3.1和EF 5.0 DbSet.Local比实际的数据库查询要慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223291/

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