【发布时间】:2011-11-24 00:24:48
【问题描述】:
有两台服务器在 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上是不可见的。 有人知道如何解决这个问题;
【问题讨论】:
标签: wcf distributed-transactions transactionscope