を(ユーザーを作成するには、直接SQL文を使用してのように)私はDNNユーザないんだけど、CLRのトランザクションのコンテキストwhithin任意のADO.Net操作が自動的にトランザクションに登録します:
using(TransactionScope scope = new TransactionScope(
TransactionScopeOption.Required))
{
UserController.CreateUser(ref UserInfo)
...
scope.Complete();
}
ない限り一部のDNNコードを明示的にに設定すると、新しいスコープをオプションSupress
で作成すると、実際のデータベース作業が適切なトランザクションに登録されます(たとえば、SqlClient操作はSqlTransactionに登録されます)。
更新
トランザクションスコープは、現在のスレッドに関連付けられたコンテキストオブジェクトです。作成されると、その存在をチェックする.Netコンポーネントがそのコンポーネントを見つけ、トランザクションに参加しなければならないことを知ります。
ファイル操作はトランザクションスコープに登録できません。基本ファイルシステムはトランザクションをサポートしていないため(少なくともWin7まで)、トランザクションスコープに登録することはできません。 SQL Serverプロバイダ、Oracle Provider、MSMQアクセサ、およびトランザクションをサポートするその他の.Netコンポーネントのようなコンポーネントは、トランザクションを開始し、現在のスコープに追加します。スコープが 'complete'の場合、同等のSqlTransactionがコミットされます。スコープ「終了」(つまり、using
ブロックの最後に到達したためDisposeメソッドが呼び出されますが)が完了しない場合、SqlTransactionはロールバックされます。
複数のコンポーネントが単一のトランザクションスコープに登録されている場合、それらは分散トランザクションの一部になります。これは、トランザクションスコープの下で2つの別々の接続を使用するなどの単純な処理で発生します。 ADO.Netは自動的にそれらを真のdistributed transactionに登録します。
ありがとうございました!私は頭の後ろのどこかにこれが存在することを知っています。スコープの詳細を少し詳しく説明できますか?これにはファイル操作などの操作が含まれていますか? どうすれば賞品をプレゼントできますか? – Johannes
最新情報を見る賞金はあなたが「受け入れられた」と答えたものに報酬を与えられます。 –