4

我在 Azure sql db 中有一个存储过程,当我从 SSMS 运行时,它在大约 300 毫秒内完成。sproc 接受一个 id 和一个日期范围,收集一些数据并将其保存到聚合表中。它不返回任何结果。

当它从 EF 代码第一个 ExecuteStoreCommand 对象(使用相同的参数)运行时,大约需要 60 秒才能完成。

我尝试使用 context.Database.ExecuteSqlCommand 和 context.Database.SqlQuery 以及相同的结果,非常慢!

有人可以解释一下,与直接执行存储过程相比,EF 执行如此缓慢吗?

有没有像样的工具可以告诉我 EF 在做什么(分析器?)

4

1 回答 1

0

如果没有存储过程的代码,很难告诉您可能没有考虑哪种“最佳实践”,但是此页面“代码项目:性能和实体框架”提供了很多关于提高 EF 性能的有用信息。

这篇“文章”有很多关于使用 Visual Studio 2010 分析器工具分析 EF 的数据访问活动的好信息。

于 2012-12-19T22:19:09.437 回答