朋友們,我有一個關于圍繞 SQL 命令的執行實施簡單重試策略的問題。我的問題是:重試循環應該封裝連接和事務的構造,還是應該存在于連接中。例如:private void RetryLogSave(DynamicParameters parameters, int retries = 3){ int tries = 0; using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { var logItemCommand = new CommandDefinition(commandText: Constants.InsertLogItem, parameters: parameters, transaction: transaction, commandType: System.Data.CommandType.Text); do { try { tries++; connection.Execute(logItemCommand); transaction.Commit(); break; } catch (Exception exc) { if (tries == retries) { transaction.Rollback(); throw exc; } Task.Delay(100 * tries).Wait(); } } while (true); }}}我在這里所做的是否合適且可以接受,或者重試邏輯是否應該存在于 SqlConnection 構造的外部?
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消