我正在使用Entity Framework在我的SQL Server 2008数据库上进行分层。 EF存在于我的Web服务中,Web服务由Silverlight客户端调用。
我发现查询在EF中执行的持续时间存在严重的性能问题。这不会发生在连续的呼叫中。
一点点谷歌搜索显示,它是由每个应用程序域构建数据库对象的内存模型。我发现这个Microsoft link解释了性能改进的预生成视图。即使在实施这些步骤之后,性能实际上也会下降而不是改善。我很好奇,如果有人成功地尝试了这种方法,并且还有其他方法可以提高性能。
我使用的是.NET 3.5。
答案 0 :(得分:2)
同样的物理定律适用于EF查询,就像普通SQL一样。检查数据库表并确保在主键和外键上有索引,数据库已正确规范化,等等。如果在微软的建议之后性能下降,那么这就是我对问题区域的猜测。
答案 1 :(得分:2)
要考虑EF性能的几个方面
答案 2 :(得分:1)
您是否在IIS中托管了Web服务?它是否与Silverlight应用程序在同一站点上运行?那数据库本身呢?它是在专用机器上运行吗?还有其他应用程序吗?对休眠数据库的第一次调用是痛苦的(我的情况实际上会在我的环境中超时。)
这里有许多因素需要考虑。但它不仅仅是EF的开销。
编辑我没有完全符合条件,但无论您的数据访问解决方案如何,打开与SQL Server的第一个连接的过程都很慢。
答案 3 :(得分:0)
使用SQL事件探查器检查执行检索数据的查询次数。如果使用Include()
ObjectQuery
{{1}}方法,则在一次查询中使用父项检索子对象。