【发布时间】:2017-05-07 13:36:23
【问题描述】:
我有 2 个可以通过 API 相互通信的系统。 这是我的代码 系统 A:
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系统回调A系统的API更新Book的信息(同上)。
在我的代码之上。我不能transaction.Complete(); 因为当 B 系统调用 A 系统的 API 时,它会创建新事务。
期望:我想一步步处理为:
- 更新 Book 实例的新信息(示例 ID = 1)
- 调用B系统API(B系统也调用A系统A更新Book ID = 1后)
- 当调用 B 系统失败时,我想回滚之前的所有更改。如果成功,提交。
【问题讨论】:
标签: entity-framework asp.net-web-api