我在Azure sql db中有一个存储过程,当我从SSMS运行时,它在大约300毫秒内完成。 sproc采用id和日期范围,收集一些数据并将其保存到聚合表中。 它不会返回任何结果。
当它从EF代码运行时,第一个ExecuteStoreCommand对象(具有相同的参数) 它需要大约60秒才能完成。
我尝试使用context.Database.ExecuteSqlCommand和context.Database.SqlQuery 同样的结果,非常慢!
有人可以解释一下,与直接执行sproc相比,EF执行速度是如此之慢?
那里有没有合适的工具可以告诉我EF正在做什么(探查器?)
答案 0 :(得分:0)
如果没有存储过程的代码,很难告诉您可能没有考虑哪种“最佳实践”,但此页面“Code Project: Performance and the Entity Framework”有很多关于提高EF性能的良好信息。 / p>
这个“article”有很多关于使用Visual Studio 2010分析器工具分析EF数据访问活动的好信息。