为什么我的EF Code First预生成视图无效?

我的上下文中有~300个DbSet,并且app加载后的第一个查询(索引字段中的FirstOrDefault())大约需要40秒。

为了改善这一点,我试图在EF 4.3.1 Code First中使用预生成的视图,使用T4模板:

Entity Framework Code First View Generation Templates On Visual Studio Code Gallery

我编译它,但我认为没有性能差异。 我希望/假设它会帮助我遇到的痛苦的慢启动,但没有运气。

它应该有帮助吗? 如果没有,那么预生成的视图究竟用于什么? 而且,我有什么办法可以改善启动时间吗? 至少可以说,分割我的上下文是痛苦的。

像NHibernate和EF这样的某些ORM启动起来很慢。 而不是试图“修复”这种缓慢,我喜欢通过确保IIS在应用程序池启动时触发此代码来消除此问题。 为了解决此问题,您必须将IIS配置为自动启动应用程序池。 此解决方案仅适用于.NET 4和IIS7.5及更高版本。

您希望使用IProcessHostPreloadClient实现一个类,该类通过向您的web.config添加serviceAutoStartProviders节点并为您的应用程序应用程序池设置startMode =“AlwaysRunning”来加载ObjectContext并配置您的应用程序以使用它。

有关详细信息,请参阅Scott Gu的博客 。

事实certificate,它实际上似乎在第一个引用的实体所在的程序集中搜索预生成的视图,而不是在DbContext所在的程序集中。 请在此处查看更多讨论: http : //blog.3d-logic.com/2012/06/13/entity-framework-codefirst-view-generation-templates-on-visual-studio-code-gallery/#comment-76 。

为了解决这个问题,我组建了一个新实体并将其放在上下文的程序集中,并将其列为第一个DbSet。 现在它捡起来,运作良好(除了这是荒谬的)。