Sql server 实体框架-MVC 3超时问题

Sql server 实体框架-MVC 3超时问题,sql-server,asp.net-mvc-3,entity-framework,visual-studio-2012,Sql Server,Asp.net Mvc 3,Entity Framework,Visual Studio 2012,我的网站有问题。我对一个存储过程做了一个小改动。我在SSMS中测试了存储过程,然后更新了实体框架以返回我添加的两个新行 但是现在,当我加载包含存储过程的页面时,页面超时。我觉得很奇怪。因此,我在我的SQL Server上运行了一个SQL Server探查器,我感到非常惊讶 通过入口框架exec[dbo].[zzz]@LogDate='2012-11-13 00:00:00',@UserID=1,@LocationID=76,@CategoryID=NULL从MVC 3运行-CPU 59469-读

我的网站有问题。我对一个存储过程做了一个小改动。我在SSMS中测试了存储过程,然后更新了实体框架以返回我添加的两个新行

但是现在,当我加载包含存储过程的页面时,页面超时。我觉得很奇怪。因此,我在我的SQL Server上运行了一个SQL Server探查器,我感到非常惊讶

通过入口框架exec[dbo].[zzz]@LogDate='2012-11-13 00:00:00',@UserID=1,@LocationID=76,@CategoryID=NULL从MVC 3运行-CPU 59469-读取101693134-持续时间-60091

从探查器复制execute语句并直接在SSMS中运行,我得到以下结果:

从SSMS exec[dbo].[zzz]@LogDate='2012-11-13 00:00:00',@UserID=1,@LocationID=76,@CategoryID=NULL-CPU 47-Reads 60185-Duration-151运行


有人知道为什么我从同一个SP得到如此截然不同的结果吗?

没关系。。。我明白了。实体框架并没有真正为最后一个值传递null。当我向存储过程中添加以下行时,它开始在网站上工作:

IF(@CategoryID = '')
    SET @CategoryID = NULL
不确定为什么探查器在SP作为空字符串接收时显示NULL。在代码中,我将其作为null传递

var dle = context.dEGet(ld,userID,lastLocationID,null).ToList();

您还可以将其作为
DBNull.Value
传递,以便在SQL Server中获取NULL。感谢dombenoit,我也会尝试一下。