预生成实体框架视图

Mat*_*iel 5 c# asp.net-mvc entity-framework ef-database-first

我正在研究使用Entity Framework 6.1.3的MVC 5应用程序.我正在尝试通过预生成视图来优化第一次调用,通常需要1-4秒.我明白为什么会这样,但我觉得我错过了某个重要的一步.

我当前的测试运行相同的功能五次,以使用EF从我的数据库中提取一组对象.当我在我的edmx中设置'嵌入输出目录'中运行时,我得到以下结果:

**

  • 第一次EF呼叫:2617毫秒
  • 第二次EF呼叫:19毫秒
  • 第三次EF呼叫:19毫秒
  • 第四次EF呼叫:17毫秒
  • 第五次EF呼叫:20毫秒

**

我期待这一点,因为EF正在生成访问数据库的本地视图......

当我切换到"复制到输出目录"时,请仔细检查我的文件是否被复制到bin文件夹并且我的连接字符串已更新,然后运行相同的测试我得到类似的结果:

**

  • 第一次EF呼叫:2546毫秒
  • 第二次EF呼叫:19毫秒
  • 第三次EF呼叫:18毫秒
  • 第四次EF呼叫:18毫秒
  • 第五次EF呼叫:21毫秒

**

第一次通话没有变化,这很奇怪.我添加了EF Power Tools,右键单击我的edmx => Entity Framework => Generate Views.我为每个表/视图创建了一个'Model1.View.cs'文件,所以我觉得我在正确的道路上.当我再次运行测试时,我得到了相同的结果.在新生成的"Model1.View.cs"文件的每个方法中放置一个断点,表明它永远不会被击中.

我错过了重要的一步吗?如何告诉EF使用EF Power Tools创建的文件,或者如何在我在线阅读时使复制到输出目录工作?

Paw*_*wel 12

据我所知,EF Power Tools未更新为支持EF6.如果您确定这是导致问题的视图生成,您可以使用视图生成T4模板或交互式预生成视图(是的,我是两者的创建者).你可以找到关于如何使用T4模板的详细信息这篇文章.此处描述交互式预生成视图.

但是,EF6中的视图生成得到了极大的改进,对于较大的模型或涉及复杂的层次结构时,这只是一个问题.我认为你看到的瓶颈不是由视图生成引起的,而是由模型构建引起的.看一下EF团队发表这篇文章,该文章通过生成原生图像来提高启动性能.您可能还想查看性能考虑因素.