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

.net dapper

質問

Dapperを使用してテーブル値のパラメータデータをストアドプロシージャに渡すことが可能かどうかは誰にも分かりますか?

受け入れられた回答

dapperに焼いたテーブル値のパラメータを直接サポートしています(n Dapper 1.26以上)。ストアドプロシージャの場合、データ型は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
    }, ...);        
    

これらのいずれも正常に動作するはずです。


エキスパート回答

今日はそうではありません。私たちは実際には、私たちの素敵な "イン"インプリメンテーション( where col in @values )ではテーブル・バリュー・パラメータを調べましたが、パフォーマンスは非常に印象的でした。しかし、SPROCの文脈では意味があります。

最善の策は、 これをプロジェクトサイトの問題として記録し、それを追跡/優先付けすることです。しかし、おそらくDbStringやDynamicParametersのオプションに似ています。

しかし今日は?いいえ。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow