0

この状況で TransactionScope を利用したいのですが、それは正しいアプローチだと思いますが、それを行ったことがなく、困難に直面しています。

疑似コードでは、私がやりたいことは次のとおりです。

  • 取引開始
    • ファイルを宛先にコピーします (Windows デスクトップ クライアントから netapp 共有へ)
    • データベース内のそのファイルへの参照を追加するWebサービスを呼び出します
  • ファイル コピー エラーが発生した場合、または Web サービスが正常に応答しない場合は、ロールバックします。
    • ファイルがまだ存在する場合は、リモートの場所からファイルを削除します
    • Web サービスを呼び出して、ファイルへの参照を削除します。これにより、ファイルが存在する場合は削除されます
  • 完全なトランザクション

ロールバックを適切に実装できるように、ファイル コピーおよび Web サービス操作用に独自のリソース マネージャーを定義する必要がありますか?

私は周りを検索しようとしましたが、誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します. ありがとう!

4

1 に答える 1

0

TransactionScope私はオブジェクトを使用する専門家ではありませんが、オブジェクトを使用してデータベース以外の機能をロールバックできるとは思いません。ただし、関係のない機能を問題なく追加することは可能です。try@JeremyThompson が正しく述べているように、これを機能させるにはandcatchブロックを追加する必要があります。

using (TransactionScope transactionScope = new TransactionScope())
{
    try
    {
        // Do your database work here

        // Then do your hard drive work here

        transactionScope.Complete();
    }
    catch
    {
        // Manually rollback your hard drive work here
    }
}
于 2013-09-16T09:56:08.270 に答える