-1
我有2个系统可以通过API相互通信。 这里是我的代码 系统A:Web API:使用事务(实体框架)时的多线程
using (var transaction = new TransactionScope())
{
var myBook = _bookRepository.Table.FirstOrDefault(x => x.Id == request.bookID);
myBook.AssigneeId = null;
_bookRepository.Update(ticket);
var result = await _anotherBApi.ApproveBookAsync(request.bookID);
if (result.ShStatus != ResponseStatus.Success)
{
result.ErrorType = ErrorType.Error;
return result;
}
transaction.Complete();
}
功能ApproveBookAsync(request.bookID)
会打电话给B系的API。处理后,B系统回电一个系统的API来更新书籍的信息(上面的一样)。
上面我的代码。我不能transaction.Complete();
,因为当B系统调用系统的API时,它会创建新的事务。
期待:我想处理步步为:
- 更新Book实例的新信息(试样ID = 1)
- 呼叫到B系统的API(B之后系统也呼吁系统A更新Book ID = 1)
- 当呼叫B系统失败时,我想要先回滚所有更改。如果成功,承诺。
我是与纠正这将无法工作在不同的流程? – NtFreX