实体框架5 - 使用参数调用存储过程。参数未被识别。

3
我有一个EF 5应用程序,我正在尝试调用一个仅有一个参数的存储过程,如下所示: enter image description here 如您所见,我已经提供了一个参数,并且它是正确的名称。有人能告诉我哪里出错了吗?
错误可能有点难以看清。错误信息为:“Procedure or function 'AddRowToPanelCdClAllData' expects parameter '@SubId' which was not supplied.”
生成此错误的代码行如下:
  internal void AddRowToPanelCdClAllData(string subId) 
    {
        this.Database.Database.ExecuteSqlCommand("AddRowToPanelCdClAllData", new SqlParameter("@SubId", subId));
    }

'subId' 的值包含一个具体数值且不为空。


当您指定的参数具有“NULL”值,但存储过程参数不接受“NULL”时,通常会发生这种情况。您能否再次确认“subId”是否具有值? - Martin
@AndrewCounts http://i.stack.imgur.com/DzHyf.png - cheesemacfly
你检查过 subId 是否为空吗? - nhrobin
@AndrewCounts - 谢谢。我修改了我的帖子。 - Randy Minder
存储过程接受的是什么类型的值?根据名称,我会认为是int/long类型,而且我相信它不会自动转换。因此,您可能需要将参数subId解析为适当的变量或显式设置SqlParameter的类型属性。 - Brocco
显示剩余2条评论
1个回答

8
尝试这个:
this.Database.Database.ExecuteSqlCommand("AddRowToPanelCdClAllData @SubId",
                                          new SqlParameter("SubId", subId));

我简直不敢相信,但那确实有效。我从来没有想过要尝试那个方法。 - Randy Minder
1
多个参数怎么办? - hakan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接