我的存储过程只返回string
。例如:此存储过程返回"en-US"
CREATE PROCEDURE [dbo].[P_GetStringConfig](
@iCode CHAR(20))
AS
BEGIN
SET NOCOUNT ON
SELECT Value
FROM T_SReq_Config WITH (NOLOCK)
WHERE Code = @iCode
IF @@ERROR <> 0
RETURN @@ERROR
RETURN 0
END
我正在使用Dapper
这样:
using (var connection = new SqlConnection(GetConnectionString()))
{
var result = connection.Query<ModelClass>(
"P_GetStringConfig",
new {@iCode = "MCode"},
commandType: CommandType.StoredProcedure).First();
}
我的ModelClass
是
class ModelClass
{
string result {get;set;}
}
但获得null
。
任何想法我在这里错过了什么? (或者还有其他方法可以调用它吗?)
答案 0 :(得分:2)
可能您应该将您的属性结果命名为SP(值)返回的字段,但这会与保留关键字产生冲突
因此,更改SP以重命名作为模型属性返回的字段
CREATE PROCEDURE [dbo].[P_GetStringConfig](
@iCode CHAR(20))
AS
BEGIN
SET NOCOUNT ON
SELECT Value AS result
FROM T_SReq_Config WITH (NOLOCK)
WHERE Code = @iCode
IF @@ERROR <> 0
RETURN @@ERROR
RETURN 0
END
另外,我建议更改代码以使用FirstOrDefault,以防SP没有找到任何代码会引发异常的内容
var result = connection.Query<ModelClass>("P_GetStringConfig",
new {@iCode = "MCode"},
commandType:CommandType.StoredProcedure)
.FirstOrDefault();