如何使用dapper在c#中映射一个简单的存储过程
本文关键字:一个 简单 存储过程 dapper 何使用 映射 | 更新日期: 2023-09-27 18:19:39
My存储过程只返回一个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();