C# 不同数据库的事务

C# 不同数据库的事务,c#,asp.net,transactions,transactionscope,C#,Asp.net,Transactions,Transactionscope,我使用2个不同的DLL连接到项目中的2个数据库。每个dll都有自己的DAL层 现在在一个页面中,我需要将一组相关数据插入这两个数据库。我想使用事务来确保正确插入数据。但我只能访问每个程序集的Insert()公共方法,而不能访问ADO.net代码。我如何处理这种情况?在c#中有类似的东西吗 您正在寻找课程: 使代码块具有事务性 用法示例: using (var tx = new TransactionScope()) { dll1.class.Insert(data); dll2.clas

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

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

您正在寻找课程:

使代码块具有事务性

用法示例:

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

  tx.Complete(); // if not executed, transaction will rollback
}
同样,运行事务中涉及的数据库的服务器需要在DB服务器和客户端计算机上正确运行和配置MSDTC服务。该实用程序在这方面非常有用


因此,这里假设所有数据库和相关驱动程序都支持分布式事务登记。检查您的文档…

请注意,使用
TransactionScope
跨两个数据库进行事务处理将需要在数据库服务器上运行MSDTC服务,并具有正确的网络配置(在非域环境中可能很难获得安全)。@AndersAbel-True。这里是一个godsend,它还假设两个DB驱动程序支持分布式事务登记。您使用的数据库是什么?我正在共享主机上使用sql server 2008?对于这种情况,这些就足够了吗?SQL Server 2008就足够了。共享托管很可能是一个问题——你需要与托管公司讨论这个问题(MSDTC充其量是个棘手的问题,我不知道大多数托管公司会做什么)。
using (var tx = new TransactionScope())
{
  dll1.class.Insert(data);
  dll2.className.Insert(relatedData);

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