不同数据库的交易

时间:2012-07-29 19:52:20

标签: c# asp.net transactions transactionscope

我在项目中使用2个不同的dll连接到2个数据库。每个dll都有自己的DAL层。

现在在页面中我需要在这两个数据库中插入一组相关数据。我想使用事务来确保正确插入数据。但是因为我只能访问每个程序集的Insert()的公共方法,而不是ADO.net代码。我该如何处理这种情况?在c#中有这样的东西吗?

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

1 个答案:

答案 0 :(得分: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 commented,运行事务中涉及的数据库的服务器将需要在DB服务器和客户端计算机上正确运行和配置MSDTC服务。 DTCPing实用程序在这方面非常有用。

作为Steve B commented,这里假设所有数据库和相关驱动程序都支持分布式事务登记。检查您的文档......