GetExecutionPlan和EnsureConnection导致EF的性能非常低

时间:2011-11-16 04:48:32

标签: c# entity-framework entity-framework-4

我正在使用Entity Framework在我的SQL Server 2008 R2数据库中查找(并保存)一个实体。我的问题是简单的ObjectContext.FirstOrDefault调用(尽管它是通过IRepository模式抽象的)。

我注意到真的很糟糕的表现。所以附加了一个分析器,发现我运行的第一个查询是大多数减速的地方。

所以我认为我的第一件事就是索引不好。但是在SSMS中运行查找几乎是即时的。 (这不是问题所在。)还尝试切换我调用的第一个查询,并且性能命中主要依赖于第一个查询。

EF调用的方法有两种占我运行时间的很大一部分。它们是GetExecutionPlan和EnsureConnection。

如果我想使用EF,这些只是我必须处理的开销吗?或者有没有办法优化这些调用?

我想到的一件事是重新使用我的Entity Framework ObjectContext。我想如果我这样做,那么缓存可以克服一些缓慢的问题。但是,我已经阅读了关于重用ObjectContext的不好的事情(这就是为什么我在每个服务调用中创建一个新的)。

0 个答案:

没有答案