ほとんどの場合は機能しますが、エラー メッセージが表示されることがあります。
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-03135: 接続が切断されました
... C:\xxx\Controllers\XController.cs:108 行目
108行目はreturn StatusCode(HttpStatusCode.ExpectationFailed);
奇妙です....
class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
SetExecutionStrategy("Oracle.ManagedDataAccess.Client", () => new MyDbExecutionStrategy(3, TimeSpan.FromSeconds(0)));
}
}
public class MyDbExecutionStrategy : DbExecutionStrategy
{
public MyDbExecutionStrategy(int maxRetryCount, TimeSpan maxDelay)
: base(maxRetryCount, maxDelay) { }
protected override bool ShouldRetryOn(Exception ex)
{
return true; // for simplicity
}
}
これを克服するには、別のラッパーを実行し、Oracle エラーを手動でキャッチする必要がありました。DBエラーをデバッグしてシミュレートすると、実行は一貫してShouldRetryOn
メソッドに入ります。