2017-02-14 2 views
2

のは、私は、データベース内のユーザー定義のデータ型を持っているとしましょう: MySuperTypeそれに2つのbigintのプロパティ(同上+コード)Dapperのとユーザー定義されたデータベースの種類

そして、私はそれらにかかるストアドプロシージャを持っているとして、パラメータ:

私のコードで今すぐ
@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); 
     } 

Dapperのケース2つの方向(パラメータとして、結果として)でのマッピングに敏感です。

パラメータの名前を指定しないようにするには、C#およびストアドプロシージャの変数で完全に同じにしてください。

関連する問題