2

これらの2つの質問に対する答えは、私自身の答えに非常に近いものですが、完全には到達していません。

SqlConnection開いたり閉じたりするだけでなく、より多くの状態があることがわかったので、usingステートメント内にない接続を閉じるときにこれを行う必要があるかどうか疑問に思います。

switch (_transactionConnection.State)
{
    case ConnectionState.Broken: /*??*/ ; break;
    case ConnectionState.Closed: ; break;
    case ConnectionState.Connecting: /*??*/ ; break;
    case ConnectionState.Executing: /*??*/ ; break;
    case ConnectionState.Fetching: /*??*/ ; break;
    default: _transactionConnection.Close(); break;                         
}

SqlConnection _transactionConnectionusingこのクラスの外部からトランザクションを開始、コミット、およびロールバックする必要があるため、はステートメント内にありません。このクラスは実装されIDisposable、switchステートメントはに存在しますDispose(bool disposing)

MSDNによると、オープンとクローズ以外の状態は製品の将来のバージョン用であるとのことですが、@ Charlieによると、リフレクターは他の状態が使用中であることを示しています。

誰かが私に何を置き換える必要があるか教えてもらえます/*??*/か?(私の最後のswitchステートメントはOpenとClosedのケースを明示的に処理/*??*/し、他の状態でも同じである場合、それが私のデフォルトのケースになると思います。)

4

1 に答える 1

2

Dispose()でこれを実装しているので、私は単に_transactionConnection.Dispose();SqlConnectionクラスを呼び出して、適切と思われることを実行させると思います。Close()現在SqlConnection.Disposeは基本的にそれを閉じるだけですが、将来変更される可能性があるため、ここでの呼び出しは避けます。

于 2012-04-11T17:48:51.837 に答える