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