我在这里不知所措,我不明白为什么程序没有得到这个参数......
程序(procInfoColor
):
ALTER PROCEDURE [dbo].[procInfoColor]
(@ID int)
AS
BEGIN
SELECT Id, Code, [Description], IsActive FROM tblColor WHERE Id = @ID
END
VB.Net代码:
Public Function infoColor(ID As Integer) As List(Of Colors) Implements iMaintenance.infoColor
Dim p = New DynamicParameters()
p.Add("@ID", ID, DbType.Int32)
Try
Return DbConn.Query(Of Colors)("procInfoColor", p, Nothing, 60, CommandType.StoredProcedure).ToList()
Catch ex As Exception
End Try
End Function
SQL Trace命令(文本数据) - 命令由VB.NET过程调用生成:
exec sp_executesql N'procInfoColor',N'@ID int',@ID=9
错误:
消息201,级别16,状态4,过程procInfoColor,行2过程或函数'procInfoColor'期望参数'@ID',它未提供。
通过右键单击执行该过程时,我可以正常运行,但是当我从VB.Net应用程序调用该过程时,我收到此错误消息,指出未提供@ID
。我检查了SQL跟踪,它确实看起来像是提供给我的?
任何帮助都将不胜感激。
可能重复:Execute stored procedure w/parameters in Dapper
在进行Dapper调用时,尝试使用命令类型的命名参数名称:
Public Function infoColor(ID As Integer) As List(Of Colors)
Implements iMaintenance.infoColor
Dim p = New DynamicParameters()
p.Add("@ID", ID, DbType.Int32)
Try
Return DbConn.Query(Of Colors)("procInfoColor",
p,
Nothing,
60,
commandType:=CommandType.StoredProcedure ).ToList()
Catch ex As Exception
End Try
End Function