-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