【ASP.NET Core】SQL Server接続のリトライとトランザクションの共存
EF CoreのEnableRetryOnFailureとトランザクションを共存させる実装方法を解説します
ASP.NET CoreEntity Framework CoreSQL ServerC#
はじめに
ASP.NET CoreアプリケーションでSQL Server接続の断続的な500エラーに対処するため、リトライロジックとトランザクションを共存させる方法を解説しています。
本記事の詳細は cloud-config tech blogの記事 をご覧ください。
技術スタック
| 項目 | 内容 |
|---|---|
| フレームワーク | ASP.NET Core |
| ORM | Entity Framework Core |
| データベース | SQL Server |
| 言語 | C# |
概要
EnableRetryOnFailureによるリトライ設定と、既存のトランザクション処理を組み合わせると、EF Coreが「ユーザー起因のトランザクションはサポートされない」というエラーを発生させます。
ポイント
- EnableRetryOnFailure: 接続リトライの回数や遅延を設定可能な自動リトライ機構
- ExecutionStrategy: EF Coreのトランザクション操作をリトライ可能にする仕組み
- CreateExecutionStrategy(): トランザクション内でリトライロジックを正しくラップする解決策
- 汎用リポジトリパターン: リトライ+トランザクションロジックをカプセル化する実装アプローチ