リクエストごとに 1 つの TransactionScope を使用しています。次のようになります。
public ActionResult Login(string user, string pass)
{
using (ServerContext context = new ServerContext ())
{
TransactionOptions transOptions = new TransactionOptions();
transOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
transOptions.Timeout = TransactionManager.MaximumTimeout;
using (var scope = new TransactionScope(TransactionScopeOption.Required, transOptions))
{
// Some logic and Linq queries here
}
}
トランザクション スコープ内でいくつかの挿入、更新、削除、および proc 呼び出しを実行しましたが、高負荷でまれに DeadLock 例外が発生しました。それで、私はそれを正しくやっていますか?それとも、操作ごとに TransactionScope を開く方がよいでしょうか? (ただし、セットの 1 つが失敗した場合は、すべての操作をロールバックする必要があります。)
ありがとうございます。