我正在使用Entity Framework 6.1.3的MVC 5应用程序上工作。我正在尝试通过预先生成 View 来优化通常需要1-4秒的第一次调用。我知道为什么会发生这种情况,但是我觉得我在某处缺少重要的一步。
我当前的测试运行相同的功能五次,以使用EF从数据库中提取对象集合。当我在edmx中设置“嵌入到输出目录中嵌入”时,我得到以下结果:
**
**
我期望这是因为EF正在生成本地 View 以访问数据库...
当我切换到“复制到输出目录”时,请仔细检查我的文件是否已复制到bin文件夹中,并且我的连接字符串已更新,然后运行相同的测试,我会得到类似的结果:
**
**
第一次通话没有任何变化,这很奇怪。我添加了EF Power Tools,在我的edmx => Entity Framework => Generate Views上单击鼠标右键。为每个表/ View 创建了一个带有字符串的'Model1.View.cs'文件,因此我感到自己处在正确的位置。当我再次运行测试时,我得到了相同的结果。在新生成的“Model1.View.cs”文件的每个方法中放置一个断点,表明它从未被命中。
我在这里错过了重要的一步吗?如何告诉EF使用EF Power Tools创建的文件,或者如何在在线阅读时使“复制到输出目录”工作?
最佳答案
据我所知,EF电动工具尚未更新为支持EF6。如果您确定这是导致问题的 View 生成,则可以使用 View 生成T4 template或交互式pre-gegnerated views(是的,我是两者的创建者)。您可以在this post中找到有关如何使用T4模板的更多详细信息。交互式预生成 View 在here中进行了描述。
但是,EF6中的 View 生成得到了极大的改进,这仅对于较大的模型或涉及复杂的层次结构才是问题。我认为您看到的瓶颈不是由 View 生成引起的,而是由模型构建引起的。看看EF团队的this post,它讨论了如何通过生成 native 镜像来提高启动性能。您可能还想看看Performance Consideration。