質問: 私は最近、Entity FrameworkがSQL Azureで接続を復元する非常に簡単な方法を持っていることを発見しました。 Dapperで同じことを達成するための推奨される方法はありますか?
回答: C#のAzureに対する接続の問題を防ぐ最速の方法は、 Microsoft Transient Fault Handling Blockです。 たとえば、以下のコードは、Windows Azure SQLデータベースへの接続を開こうとするときに、1秒間隔で3回まで再試行します。 ``` var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(1)); var retryPolicy = new RetryPolicy(retryStrategy); retryPolicy.ExecuteAction(() => myConnection.Open()); ``` `FixedInterval`はバックオフポリシーなので、3回試してみるまで試したり、1秒待ったり、やり直したりします。 `SqlDatabaseTransientErrorDetectionStrategy`は、スローされた例外をチェックするだけです。再試行する必要のある接続例外の場合、 `RetryPolicy`にアクションを再度実行するよう指示します。接続例外でない場合、アクションは実行されず、元の例外が通常通りスローされます。 あなたがいつDapperでそれを使うべきかについては、オープンしている接続と読み取り操作を安全に再試行できますが、挿入を複製したり、行を2回削除しようとするなど、書き込み操作を認識または再試行してください。 詳細については 、こちらのライブラリはWindows Azureの検出方法を含むNuGetパッケージとしてご覧いただけます 。