EF 6.0.1,代码优先,两个表(父/子关系)。我正在使用模型来查询WebAPI中的数据,并将JSON格式的数据(大约3KB)返回到网站(我还测试了最简单的“.FirstOrDefault()”查询 - 这里没有区别)。< / p>
WebAPI的第一次打击很慢(大约10秒)。这与网站开始无关,网站此时已经热身了。我通过ADO实现了相同的查询,第一次点击大约需要1秒。随后的请求显示了一个小得多的实体框架惩罚(EF约为190毫秒,ADO约为170毫秒)。
我用本地sql server和Azure SQL测试了这个,结果类似。我描述了本地数据库:没有太多发生,所有0持续时间请求。实体框架生成其他查询以检查迁移,但这些是精益的。查看配置文件输出,我注意到所有数据库操作似乎都在大约一秒钟内发生,而完整的EF初始化过程需要10秒。为什么呢?
我已经在这里找到了一些提示,例如使用发布模式并启用“生成序列化”,但这并没有做太多。在我开始实施明显的解决方法(早期初始化EF或只是放弃EF)之前,我希望我还应该检查一些其他注意事项。
答案 0 :(得分:2)
Entity Framework 6.0.1中存在有关启动性能的已知问题,尤其是附加了调试器的问题。详细信息在Entity Framework Blog上讨论,但由于EF6.0.2标记为稳定,因此您的第一个操作应该是更新为使用它。
一般情况下,EF6直接在ADO中查询会有一些启动延迟,因为它需要加载与模型相关的内容,直接使用ADO时不需要这样做。但是,在EF6.0.1上看起来确实比正常情况更糟。