Мы применили корпоративную библиотеку Microsoft Transient Fault Handling Block по соединению и командам Azure Sql.Как применить политику повторения надежныхSqlConnection для SqlDataAdapter/DataSet
Например,
using(var sqlConnection = new ReliableSqlConnection(_connectionString, _connectionRetry, _commandRetry)
{
var command = sqlConnection.CreateCommand();
command.CommandText = "...";
sqlConnection.Open();
using(var reader = sqlConnection.ExecuteCommand<SqlDataReader>(command))
{
...
}
}
Он будет работать на таких, как command.ExecuteReader()
, что первоначальный вызов без повторов политики. Но что, если код использует DataSet
и SqlDataAdapter
:
using(var sqlConnection = new ReliableSqlConnection(_connectionString, _connectionRetry, _commandRetry)
{
var command = sqlConnection.CreateCommand();
command.CommandText = "...";
sqlConnection.Open();
// how to convert below codes to right way?
var adapter = new SqlDataAdapter(command);
var dataSet = new DataSet();
adapter.Fill(dataSet);
// handle dataSet
...
}
Мы в основном работаем над некоторым унаследованным кодом, чтобы добавить некоторую стратегию повтора.