我的存储过程只返回一个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
。
有什么想法我在这里缺少什么? (或者有没有其他方法来调用它?)
可能您应该将您的属性结果命名为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();