首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储过程需要很长时间才能在Controller中返回,而在查询分析器中则不需要

存储过程需要很长时间才能在Controller中返回,而在查询分析器中则不需要
EN

Stack Overflow用户
提问于 2014-05-06 21:42:40
回答 1查看 1.8K关注 0票数 0

我在我的ASP.Net MVC 4应用程序中运行了一个存储过程。该过程对记录进行了大量处理,并将记录打包在一个很好的结果集中。当我在*Query *er中运行这个sproc时,将在0秒钟内返回数据,。但是,当我在调试器中运行以下代码时,需要8-10秒才能返回

代码语言:javascript
运行
复制
EvalStatus = db.Database.SqlQuery<EvaluationStatus>(
"exec [pro].sp_PROLeaderResultsGrid @schoolID, @leaderID, @blnAdmin",
 new SqlParameter("schoolID", leader.SchoolID),
 new SqlParameter("leaderID", leader.ID),
 new SqlParameter("blnAdmin", LeaderViewModel.IsAdmin)).ToList();

LeaderViewModel.EvaluationStatus = EvalStatus;

EvaluationStatus只是按这个过程的结果集的顺序排列的一串字符串和整数。

代码语言:javascript
运行
复制
public class EvaluationStatus : IEvaluationStatus
{
    public string TeacherID { get; set; }
    public string TeacherName { get; set; }
    public string TeacherStatus { get; set; }
    public string Actions { get; set; }
    public string ProLeaderStatus { get; set; }
    public string ProLeaderID { get; set; }
    public string ProLeaderName { get; set; }
    public string FinalLeaderName { get; set; }
    public string FinalLeaderStatus { get; set; }
    public string FinalTeacherStatus { get; set; }
    public string MenuActions { get; set; }
    public int LeaderKey { get; set; }
}

有什么是显而易见的吗?我错过了什么东西会导致这段代码在从站点运行时花费8-10秒?

一些其他的信息。除了这个调用之外,我在我的大多数应用程序中都使用实体框架。我还没有将这个存储过程添加到.edmx中。

EN

回答 1

Stack Overflow用户

发布于 2014-05-06 21:55:39

您应该尝试在proc中添加"SET NOCOUNT ON“子句。这样,每次在proc内执行T语句时,proc都不会向ADO.Net发送信号。这可能会解决问题。

如果它继续运行缓慢,您可以将这个proc切换到一个标准的ADO.Net proc调用,并将SqlConnection PacketSize属性设置为3000到8000之间。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.packetsize.aspx

另外,请记住,调试器执行时间无论如何都不是一个很好的度量,因为调试器本身会使事情变慢(有时非常慢)。在发布模式和时间度量逻辑(使用TimeSpans或其他什么)上运行相同的代码,以了解实际的执行时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23505041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档