Dapperでストアドプロシージャを呼び出す方法はありますか?

.net dapper orm stored-procedures

質問

私は非常にstackoverflow.comのDapper Micro ORMの結果に感銘を受けます。私は新しいプロジェクトのためにそれを検討していますが、私のプロジェクトにはストアドプロシージャが必要なことがあり、ウェブ上で多くの検索をしていますが、ストアドプロシージャでは何も見つかりませんでした。 Dapperにストアドプロシージャを使用させる方法はありますか?

可能であれば、私の方法でそれを拡張する必要があるかどうか教えてください。

受け入れられた回答

単純なケースでは、次のことができます。

var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
        commandType: CommandType.StoredProcedure).First();

あなたは何かもっと欲しいと思うなら、あなたはできます:

 var p = new DynamicParameters();
 p.Add("@a", 11);
 p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
 p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

 cnn.Execute("spMagicProc", p, commandType: CommandType.StoredProcedure); 

 int b = p.Get<int>("@b");
 int c = p.Get<int>("@c"); 

さらに、バッチでexecを使用することもできますが、それはより厄介です。


人気のある回答

私はその答えがストアドプロシージャのどの機能を使用する必要があるかによって異なります。

結果セットを返すストアドプロシージャは、 Queryを使用して実行できます。結果セットを返さないストアド・プロシージャは、SQLコマンドとして( EXEC <procname>を使用して)(必要に応じて入力パラメータに加えて)どちらの場合もExecuteを使用してExecuteできます。詳細は、 ドキュメントを参照してください。

リビジョン2d128ccdc9a2以降OUTPUTパラメータのネイティブサポートはないようです。これを追加するか、あるいはTSQL変数を宣言したより複雑なQueryコマンドを作成し、ローカル変数にOUTPUTパラメータを収集してSPを実行し、最後に結果セットに戻しました。

DECLARE @output int

EXEC <some stored proc> @i = @output OUTPUT

SELECT @output AS output1


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