实体框架每次编译后第一次加载很慢 [英] Entity framework very slow to load for first time after every compilation

查看:307
本文介绍了实体框架每次编译后第一次加载很慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所暗示我在与反对使用实体框架SQL Server数据库的第一个查询的问题。我试图寻找一个答案,但似乎没有人居然有一个解决的办法。

As the title suggest i'm having a problem with the first query against a SQL Server database using the Entity Framework. I have tried looking for an answer but no one seems to actually have a solution to this.

测试是在使用实体框架6的Visual Studio 2012做的,我也用在T4模板意见预编译的意见。该数据库是一个SQL Server 2008。我们有大约400波苏斯(400映射文件),只有在数据库表100行数据上。

The tests was done in Visual Studio 2012 using Entity Framework 6, I also used the T4 views template to pre-compile the views. The database was on a SQL Server 2008. We have about 400 POCOs (400 mapping files), only have 100 rows data in database table.

以下捕获我的测试代码以及结果

Following capture is my test code and result.

static void Main(string[] args){
   Stopwatch st=new Stopwatch();
   st.Start();
   new TestDbContext().Set<Table1>.FirstOrDefault();
   st.stop();
  Console.WriteLine("First Time "+st.ElapsedMilliseconds+ " milliseconds");

   st.Reset();
   st.Start();
     new TestDbContext().Set<Table1>.FirstOrDefault();
   st.stop();
  Console.WriteLine("Second Time "+st.ElapsedMilliseconds+ " milliseconds");

}



测试结果

Test results

First Time 15480 milliseconds
Second Time 10 milliseconds


推荐答案

在第一个查询EF编译模型。这可能需要为这个大型的典范一些严重的时间。

On the first query EF compiles the model. This can take some serious time for a model this large.

下面是3建议:的 http://www.fusonic.net/en/blog/2014/07/09/three-steps-for-fast-entityframework-6.1-first-query - 性能/

摘要:


  1. 使用缓存DB模式存储

  2. 生成预编译的意见

  3. 用正根,以避免jitting生成的EntityFramework的预编译的版本

我也想确保我做基准,当编译发布模式的应用程序。

I would also make sure that I compile the application in release mode when doing the benchmarks.

另一种解决方案是看分裂的DbContext。 400的实体是很多,它应该是更好的与较小块的工作。我还没有尝试过,但我认为这将有可能建立一个意义上的车型之一没有单一负载需要15秒。看到这个帖子由朱莉·勒曼 https://msdn.microsoft.com/en-us/magazine/jj883952。 ASPX

Another solution is to look at splitting the DBContext. 400 entities is a lot and it should be nicer to work with smaller chunks. I haven't tried it but I assume it would be possible to build the models one by one meaning no single load takes 15s. See this post by Julie Lerman https://msdn.microsoft.com/en-us/magazine/jj883952.aspx

这篇关于实体框架每次编译后第一次加载很慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆