スポンサーリンク
スポンサーリンク

ASP.NET Core Web APIとストアドプロシージャで実装するシンプルで高速なDBトランザクション処理(on SQLServer)

.NET CoreASP.NET CoreC#SQL ServerSwaggerTransact-SQLVisual StudioWeb APIデータベース

.Net 6.0 の ASP.NET Core Web APIから、Dapper+Microsoft.Data.SqlClient NuGetパッケージを使い、SQLServerデータベースのストアドプロシージャ(Transact-SQL)を使用する場合の、DBトランザクション処理を行うサンプルを作成しました。
ソースコードはGitHubで公開しています。

Youtube動画だと、DBトランザクション継続中に SQLServer Management Studio側からの接続に対してレスポンスが返って来ないのは、SQLServer側でロックが発生している為です。

 

ソースコード構成

ASP.NET Core Web APIで実装するシンプルで高速なDBトランザクション処理(on SQLServer) で作成したソースコードに、下記の修正を加えました。

 

ソースコード変更内容を解説

/SQL/SQL_TableA.cs

C#側に定数として持っていた、Select文、Insert文をストアドプロシージャ側へ移したので、C#側のSQL文は削除し、Dapperにはストアドプロシージャ名を渡すように変更。

 

ストアドプロシージャ定義

C#から呼び出しているストアドプロシージャの実装内容は、C#側に定数として持っていた、Select文、Insert文をそのままストアドプロシージャ(Transact-SQL)へ移しています。
※SQLをストアドプロシージャ側に纏めると、C#側のソースコードはシンプルになり、SQL実行時にSQLServerがSQLの実行プランを毎回解析する必要はなくなり、処理コストを少なくできます。
ストアドプロシージャをの作り方は SQL Serverのストアドプロシージャを SQL Server Management Studioで作成する手順 を参照下さい。

コメント

タイトルとURLをコピーしました