moh*_*sti 2 c# asp.net transactions transactionscope
我在项目中使用2个不同的dll连接到2个数据库.每个dll都有自己的DAL层.
现在在页面中我需要在这两个数据库中插入一组相关数据.我想使用事务来确保正确插入数据.但是因为我只能访问每个程序集的Insert()的公共方法,而不是ADO.net代码.我该如何处理这种情况?c#中有这样的东西吗?
beginTransaction(){
dll1.class.Insert(data);
dll2.className.Insert(relatedData);
....
}
Run Code Online (Sandbox Code Playgroud)
你正在寻找TransactionScope班级:
使代码块具有事务性.
用法示例:
using (var tx = new TransactionScope())
{
dll1.class.Insert(data);
dll2.className.Insert(relatedData);
tx.Complete(); // if not executed, transaction will rollback
}
Run Code Online (Sandbox Code Playgroud)
正如@Anders Abel 评论的那样,运行事务中涉及的数据库的服务器将需要在DB服务器和客户端计算机上正确运行和配置MSDTC服务.该DTCPing工具在这方面是非常有帮助的.
正如Steve B 评论的那样,这里假设所有数据库和相关驱动程序都支持分布式事务登记.检查你的文件......