实体框架存储过程通过远程连接

时间:2012-02-05 01:03:24

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

我正在使用EF 4,而且我对另一个怪癖感到难过......基本上,我有一个相当简单的存储过程,它负责从SQL检索数据并返回复杂类型。我通过函数导入将存储过程添加到我的模型中。它或多或少在以下结构中。

using (ModelContainer context = GetNewModelContainer())
{
   return context.GetSummary(id, startDate, endDate, type).ToList();
} 

我应该提一下上面的代码是通过远程SQL连接执行的。执行需要将近10分钟。但是,通过远程连接使用SQL Server Management Studio,存储过程几乎立即执行。

只返回100条记录,每条记录大约有30个字段。

当我在本地运行上面的代码(没有远程连接)对照客户数据库的备份时,它会毫不拖延地执行。

我对可能造成这种性能损失的原因感到困惑。 10分钟是不可接受的。我不认为这是存储过程。由于远程连接,它可能是序列化吗?关于如何跟踪和纠正罪魁祸首的任何想法?

1 个答案:

答案 0 :(得分:3)

您描述的症状通常与错误缓存的查询计划相关(由于参数嗅探)。

确保您的统计信息是最新的,并在索引碎片时重建索引。

规范性引用是: Slow in the Application, Fast in SSMS? 绝对必要的读物。

可能有用的SO链接: