假设我在数据库中有一个用户定义的数据类型:
MySuperType
作为其中的两个bigint属性(Id + Code)
我有一个存储过程,它接受这些参数:
@MySuperType, @Price, @dateModified, etc...
现在在我的代码中,我正在使用这样的Dapper:
using (var connecion = new SqlConnection(_connectionString))
{
result = connection.Execute("SP_name",
new {mySuperType, price, date},
commandType: CommandType.StoredProcedure);
}
但我一直收到错误
类型操作数冲突:Dapper无法将用户定义的类型:MySuperType从参数映射到存储过程。
更改存储过程或替换用户定义的类型不是一个选项
有没有人知道如何映射类型并将参数(所有这些)发送到存储过程?
答案 0 :(得分:1)
参数名称必须与过程中定义的参数相对应:
using (var connecion = new SqlConnection(_connectionString))
{
result = connection.Execute("SP_name",
new {MySuperType = mySuperType, Price = price, dateModified = date},
commandType: CommandType.StoredProcedure);
}
Dapper在两个方向上的映射(作为参数和结果)区分大小写。
如果您想避免指定参数的名称,请确保在c#和存储过程中的变量中完全相同。