实体框架查询在一台服务器上运行缓慢,但在另一台服

时间:2015-01-27 10:36:26

标签: c# entity-framework

我有一个简单的C#控制台应用程序,它使用Entity Framework 6.1来访问SQL Server 2008 R2数据库。当我在两个不同的服务器上运行此应用程序时,与其他服务器相比,其中一个服务器上的数据库读取时间要长得多,即使它们从同一个数据库中读取。更具体地说,每个查询在慢速服务器上花费大约½秒。

到目前为止,我得出以下结论:

  • 使用sqlcmd从同一数据库读取时,两台服务器的性能相似。因此,网络性能不是问题。
  • 两台服务器都运行Windows Server 2008 R2和.NET 4.5.1。此外,它们具有“netsh int tcp show global”显示的相同网络设置(由于此问题.NET to remote SQL Server slow on one machine, not the other,我调查了后者)。
  • 实体框架日志(在app.config中启用)和SQL Server Profiler显示慢速服务器上的½秒延迟发生在生成的SQL查询发送到SQL Server之前。
  • 仅当实体框架查询包含在编译时未知的参数时才会发生延迟,即dbContext.SomeDbSet.Where(e => e.Id == 5)很快,因为编译时已知5 ,而dbContext.SomeDbSet.Where(e => e.Id == id),因为变量id在编译时是未知的。这表明每次都是从头开始生成参数化查询。

有什么建议吗?非常感谢提前。

0 个答案:

没有答案