Web API:使用事务时的多线程(实体框架)

时间:2017-05-07 05:15:24

标签: entity-framework asp.net-web-api

我有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 system 的API。处理完毕后, B系统会回拨系统的API来更新图书信息(与上面相同)。

高于我的代码。我不能transaction.Complete();,因为当B系统调用系统的API时,它将创建新的事务。

期待:我想逐步处理:

  1. 更新Book实例的新信息(样本ID = 1)
  2. 调用B系统的API(B系统也调用A系统的A来更新Book ID = 1)
  3. 当呼叫B系统失败时,我想先回滚所有更改。如果成功,请提交。

0 个答案:

没有答案