WCF在多个服务器和一个数据库上进行分布式事务

WCF在多个服务器和一个数据库上进行分布式事务,wcf,distributed-transactions,transactionscope,Wcf,Distributed Transactions,Transactionscope,有两台服务器正在WCF上运行某些服务。 所有服务都使用共享数据库。 所有服务都使用transport net.tcp和允许的事务流 开始使用TransactionScope后出现问题: 第一个方法成功地创建了用户 第二个成功地获得了他的个人资料 但第三种方法失败,在数据库中找不到错误用户 using(TransactionScope scope = new TransactionScope()) { long employeeId = serviceOnServerA.CreateEmpl

有两台服务器正在WCF上运行某些服务。 所有服务都使用共享数据库。 所有服务都使用transport net.tcp和允许的事务流

开始使用TransactionScope后出现问题: 第一个方法成功地创建了用户 第二个成功地获得了他的个人资料

但第三种方法失败,在数据库中找不到错误用户

using(TransactionScope scope = new TransactionScope())
{
   long employeeId = serviceOnServerA.CreateEmployee(profile);
   var employeeProfile = serviceOnServerA.GetEmployeeProfile(employeeId );

   serviceOnServerB.CreateContract(employeeId);    
   scope.Complete();
}
但这种情况:

using(TransactionScope scope = new TransactionScope())
{
   long employeeId = serviceOnServerA.CreateEmployee(work1);
   var employeeProfile = serviceOnServerA.GetEmployeeProfile(employeeId );
   scope.Complete();
}
serviceOnServerB.CreateContract(employeeId);
工作很好,但不适合我的任务

可以看出,在服务器A上创建的本地事务在服务器B上不可见。
有人知道如何解决这个问题

问题解决了。与使用的npgsql数据库提供程序相关的问题,该提供程序不支持DTC。
代码重写到MSSQL,问题消失了。

问题解决了。与使用的npgsql数据库提供程序相关的问题,该提供程序不支持DTC。 代码被重写为MSSQL-问题消失了