1

わかりましたので、webform と 5 つの FileUpload コントロールがあります。ユーザーは 1 から 5 までの任意の数のファイルをアップロードできますが、これらのファイルのいずれかがアップロードされない場合は、すべてをロールバックしたいと考えています...例: ユーザーが選択した場合4つのファイルがあり、4番目に予期しないことが発生した場合は、以前の3つのファイルのアップロードをすべて削除またはロールバックしたい..私はこれを試した..

 try
{
  using (TransactionScope scope = new TransactionScope())
                {
dboperation dbinsert=new dboperation();
if (file1.ContentLength > 0)
{
      .......
      .......
dbo.insert(bytes, lastid, file2.FileName);
}

if (file2.ContentLength > 0)
{
      .......
      .......
dbo.insert(bytes, lastid, file2.FileName);
}

if (file3.ContentLength > 0)
{
      .......
      .......
dbo.insert(bytes, lastid, file2.FileName);
}//till ...file5

scope.Complete();
}//end of transactionscope
}


catch { }

「dboperation」は c# ファイルのクラスで、「dbinsert」は挿入ストアド プロシージャを実行するメソッドです。私の推測では、Transaction Scope を使用する必要があると思いますが、私が正しいかどうかはわかりません。

4

2 に答える 2

2

transactionを実装する必要があります。最初のトランザクションを挿入する前にトランザクションを開始し、発生したエラーをキャッチする必要があります。エラーが発生した場合は、トランザクションをロールバックする必要があります。すべてがうまくいけば、トランザクションをコミットできます。

また、接続を dboperation の外に移動するか、外部から接続を取得してそれを使用する dboperation のメソッドを作成する必要があります。

于 2013-08-27T09:58:10.600 に答える