2017-02-14 101 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#和存儲過程中的變量中具有完全相同的名稱。