3

いくつかの関数を囲むtransacationScopeがあります。これらの関数はそれぞれ、挿入または更新のデータベース呼び出しを行います。

 using (var ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
            {
                IsolationLevel =
                    IsolationLevel.Serializable,
                Timeout = new TimeSpan(0, 0, 15, 0)
            }))
            {
                    DoStuff(arg!, arg2);
                    ts.Complete(); //This had to be added to commit the changes for inserts (updates worked), otherwise data was being rolled back
            }

ts.Complete();挿入と更新はデータベースにコミットされますが、更新のみは行われません。誰かが理由を説明してもらえますか?

4

1 に答える 1

4

これは、更新がトランザクションの一部ではないことを示唆しています。それは次のことを意味します。

  • 更新は、トランザクションスコープを開始する前に既に存在していた接続で行われました
  • 明示的にネストされた new-transaction または no-transaction がありました
  • ユニコーン

確認するには: Complete がないと、トランザクション内の何もコミットされません。

于 2013-01-03T16:45:24.723 に答える