我在项目中使用 2 个不同的 dll 连接到 2 个数据库。每个 dll 都有自己的 DAL 层。
现在在页面中我需要将一组相关数据插入到这两个数据库中。我想使用事务来确保数据插入正确。但因为我只能访问每个程序集的 Insert() 公共(public)方法,而不是 ADO.net 代码。我该如何处理这种情况? c#中有类似的东西吗?
beginTransaction(){
dll1.class.Insert(data);
dll2.className.Insert(relatedData);
....
}
最佳答案
您正在寻找TransactionScope
类:
Makes a code block transactional.
使用示例:
using (var tx = new TransactionScope())
{
dll1.class.Insert(data);
dll2.className.Insert(relatedData);
tx.Complete(); // if not executed, transaction will rollback
}
如@Anders Abel commented ,运行事务中涉及的数据库的服务器将需要在数据库服务器和客户端计算机上正确运行和配置 MSDTC 服务。 DTCPing实用程序在这方面非常有帮助。
关于c# - 不同数据库的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712436/