記事一覧に戻る

【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
ORMEntity Framework Core
データベースSQL Server
言語C#

概要

EnableRetryOnFailureによるリトライ設定と、既存のトランザクション処理を組み合わせると、EF Coreが「ユーザー起因のトランザクションはサポートされない」というエラーを発生させます。

ポイント

  • EnableRetryOnFailure: 接続リトライの回数や遅延を設定可能な自動リトライ機構
  • ExecutionStrategy: EF Coreのトランザクション操作をリトライ可能にする仕組み
  • CreateExecutionStrategy(): トランザクション内でリトライロジックを正しくラップする解決策
  • 汎用リポジトリパターン: リトライ+トランザクションロジックをカプセル化する実装アプローチ
motokifujino.com

This site is made by motoki fujino, Icons by Lucide.