2

プロジェクト内の2つのデータベースに接続するために2つの異なるdllを使用しています。各dllには、独自のDALレイヤーがあります。

ここで、ページに関連データのセットをこれら2つのデータベースに挿入する必要があります。トランザクションを使用して、データが正しく挿入されていることを確認したい。ただし、ADO.netコードではなく、各アセンブリのInsert()のパブリックメソッドにアクセスできるだけです。この状況にどのように対処できますか?C#にこのようなものはありますか?

beginTransaction(){
  dll1.class.Insert(data);
  dll2.className.Insert(relatedData);
  ....
}
4

1 に答える 1

5

TransactionScopeあなたはクラスを探しています:

コードブロックをトランザクション化します。

使用例:

using (var tx = new TransactionScope())
{
  dll1.class.Insert(data);
  dll2.className.Insert(relatedData);

  tx.Complete(); // if not executed, transaction will rollback
}

@Anders Abel がコメントしたように、トランザクションに関係するデータベースを実行しているサーバーは、DBサーバーとクライアントマシンの両方でMSDTCサービスを実行し、正しく構成する必要があります。DTCPingユーティリティは、この点で非常に役立ちます。

Steve Bが コメントしたように、ここでは、すべてのデータベースと関連するドライバーが分散トランザクションの参加をサポートしているという前提があります。ドキュメントを確認してください...

于 2012-07-29T19:54:25.950 に答える