1

有两台服务器在 WCF 上运行一些服务。所有服务都使用共享数据库。所有服务都使用传输 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上不可见。有人知道如何解决这个问题;

4

1 回答 1

1

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

于 2011-12-02T06:34:41.680 回答