1. ホーム
  2. .net

[解決済み] DapperはSQL 2008のテーブル値パラメータをサポートしていますか?

2023-07-27 11:57:01

質問

誰か テーブル値パラメータ のデータをストアドプロシージャに渡すことは可能でしょうか?

どのように解決するのですか?

現在(Dapper 1.26以降)、テーブル値パラメータをDapperに直接組み込んでサポートしています。ストアドプロシージャの場合、データ型はsproc APIに組み込まれているため、必要なのは DataTable :

var data = connection.Query<SomeType>(..., new {
    id=123, name="abc", values = someTable
}, ...);

直接コマンドテキストを入力する場合、他に2つのオプションがあります。

  • ヘルパーメソッドを使用して、カスタムデータ型を伝える。

    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable.AsTableValuedParameter("mytype")
    }, ...);
    
    
  • データテーブル自身に、どのようなカスタムデータ型を使用するかを指示します。

    someTable.SetTypeName("mytype");
    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable
    }, ...);        
    
    

いずれも問題なく動作するはずです。