2017-02-14 98 views
2

比方说,我在数据库中的用户定义的数据类型: MySuperType其在两份BIGINT属性(编号+代码)小巧玲珑和用户定义的数据库类型

而且我有一个存储过程,它发生在那些参数:

@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从参数映射到存储过程。

更改存储过程或免去用户定义类型是不是一种选择

有没有人有一个想法,我能做些什么来映射类型和发送的参数(所有的)到存储过程?

回答

1

的参数临屋的名称必须对应于程序所定义的参数:

using (var connecion = new SqlConnection(_connectionString)) 
     { 
      result = connection.Execute("SP_name", 
       new {MySuperType = mySuperType, Price = price, dateModified = date}, 
       commandType: CommandType.StoredProcedure); 
     } 

小巧玲珑是壳体在2个方向的映射敏感(作为参数,并作为结果)。

如果您想避免指定参数的名称,请确保您在c#和存储过程中的变量中具有完全相同的名称。