使用实体框架 4.0,似乎第一次对实体框架对象上下文执行(读取或写入)操作时,它需要的阶数比第二次长。 例如,第一次查询可能需要 10 秒(是秒),第二次可能需要 .1 秒。
我猜第一次构建对象上下文时,它必须构建某种幕后数据结构? 它是否解析 EDMX 文件(我认为会在编译时完成?
它正在构建在后续调用中缓存的视图。
您可以预先生成视图,以避免首次影响性能:
http://www.dotnetspark.com/kb/3706-optimizing-performance.aspx
具有将实体数据模型 (EDM) 元数据加载到内存、预编译视图和其他一次性操作的启动费用,您可以尝试使用预热查询来解决这个问题。
也许您对运行查询的数据库表有问题。 因此,第一次运行 EF 时,它会编译查询、创建执行计划等,因此当您第二次运行时,DB 将使用查询的缓存版本。 尝试将索引添加到表中,看看是否有帮助。