データベースに多くの情報を追加する必要があります。この情報の追加には、約 5 ~ 7 分かかります。そして、トランザクションを追加する必要があります。
私はこれを試しました:
try {
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
UpdateTable1();
UpdateBigTable2();
...
db.Transaction.Commit();
} catch {
db.Transaction.Rollback();
}
しかし、データベースが更新されているときは、DB を読み取ったり操作したりできません。
を設定しようとしましIsolationLevel
たが、どれも役に立ちませんでした。
私はこれを試しました:
using (var ts = new TransactionScope()) {
UpdateTable1();
ts.Complete();
}
しかし、プログラムは 2 ~ 3 分後にクラッシュします。
この解決策も役に立ちませんでした:
var transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
transactionOptions.Timeout = TimeSpan.MaxValue;
using (var ts = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
...
}
設定した場合、データベースが更新されているときにデータベースにアクセスできますが、TransactionScopeOption.Suppress
この場合、トランザクションは機能しません。