0

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

但是现在当我加载包含存储过程的页面时,页面超时。我觉得这真的很奇怪。所以我在我的 SQL Server 上运行了一个 SQL Server Profiler,我真的很惊讶。

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

从 Profiler 复制执行语句并直接在 SSMS 中运行,我得到以下结果:

从 SSMS 运行 exec [dbo].[zzz] @LogDate='2012-11-13 00:00:00',@UserID=1,@LocationID=76,@CategoryID=NULL - CPU 47 - 读取 60185 - 持续时间 - 151

任何人都知道为什么我从同一个 SP 得到如此完全不同的结果?

4

1 回答 1

0

没关系...想通了。实体框架,并没有真正为最后一个值传递空值。当我将以下行添加到存储过程中时,它开始在网站上运行:

IF(@CategoryID = '')
    SET @CategoryID = NULL

当 SP 将其作为空字符串接收时,不确定为什么 Profiler 显示为 NULL。在代码中,我将它作为空值传递。

var dle = context.dEGet(ld,userID,lastLocationID,null).ToList();
于 2012-12-13T13:48:44.000 回答