我在项目中使用2个不同的dll连接到2个数据库。每个dll都有自己的DAL层。
现在在页面中我需要在这两个数据库中插入一组相关数据。我想使用事务来确保正确插入数据。但是因为我只能访问每个程序集的Insert()的公共方法,而不是ADO.net代码。我该如何处理这种情况?在c#中有这样的东西吗?
beginTransaction(){
dll1.class.Insert(data);
dll2.className.Insert(relatedData);
....
}
答案 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实用程序在这方面非常有用。