编辑:
这个问题不是关于编译查询,而是关于在编译时生成EF数据库视图。
来自ADO.NET团队博客:Exploring the Performance of the ADO.NET Entity Framework - Part 1:
查看生成56% - 创建数据库的抽象视图的一个重要部分是为商店的本地语言中的查询和更新提供实际视图。在此步骤中,将创建商店视图。好消息是有一种方法可以使视图生成成为构建过程的一部分,这样就可以在运行时避免这一步骤。
我的网络应用程序中的第一个数据库调用大约需要2.5秒,而后续相同的调用需要大约30秒。
我使用ADO.NET team blog中的T4模板生成了预编译的视图源文件,但它没有发现任何可检测的差异。
T4模板运行大约需要2.5秒,生成的代码会编译。
我错过了什么?
答案 0 :(得分:3)
修正了它!
从EntityViewContainer派生的生成视图必须位于包含STO自跟踪对象的程序集中,而不是包含edmx模型的程序集。
答案 1 :(得分:1)
在构建之后,您首次调用应用程序,Web服务器将卸载应用程序,第一次调用“再次”启动应用程序,以及与之关联的所有内容。这与预编译的视图无关。因此,第一次调用将始终在加载应用程序时花费更长时间。
顺便提一下,生产服务器上也会发生同样的事情。空闲的工作池可能会卸载您的应用程序, next 调用将再次加载应用程序,执行时间比通常的请求要长得多。