Dapper 使用 varchar 类型的参数执行存储过程时出错

问题描述 投票:0回答:1

我收到以下错误

"Error converting data type nvarchar(max) to int.
2023-10-19 StartDate
2023-10-19 EndDate
Start ConvertedDate 2023-10-19
End ConvertedDate 2023-10-19"

我试图通过发送一些动态参数来执行存储过程;发送的参数是字符串;存储过程需要这些参数的 varchar 类型;

这是我尝试执行的代码:

var parameters = new DynamicParameters();
parameters.Add("Code", diaryUserCode, DbType.String);
parameters.Add("SDate", new DbString() { Value = startDate, IsAnsi = true }, DbType.AnsiString);
parameters.Add("EDate", new DbString() { Value = endDate, IsAnsi = true }, DbType.AnsiString);
parameters.Add("jsonResult", DbType.String, direction: ParameterDirection.Output);
await connection.ExecuteAsync
(procedureName, parameters, commandType: CommandType.StoredProcedure);

这是程序签名

CREATE   PROCEDURE [dbo].[Test] (
@Code VARCHAR(30)
,@SDate VARCHAR(30)
,@EDate VARCHAR(30)
,@jsonResult NVARCHAR(MAX) OUTPUT
)
AS
.net asp.net-core dapper
1个回答
0
投票
parameters.Add("jsonResult", dbType: DbType.String, size: -1, direction: ParameterDirection.Output);

(您将值传递为 16,即 DbType.String 的整数值 - 并且您没有指定“max”部分)

© www.soinside.com 2019 - 2024. All rights reserved.