在 C# 中使用事务范围返回"A root ambient transaction was completed before the nested transaction."



我正在使用System.Transactions中的事务作用域。

我有这样的方法,在数据库中有两个插入。插入第一个本地化,但由于在第二次插入时失败,因此会回滚
现在错误不在我发送的数据中。数据很好。当我删除事务范围时,它就起作用了
我得到这个错误:

系统。InvalidOperationException:根环境事务在嵌套事务之前完成。嵌套事务应首先完成。

它还进入第二个catch并处理作用域。可能是什么问题?

这是我的代码:

public async Task InsertCategory(InsertCategoryRequest request)
{
using var scope = new TransactionScope();
int localizationId;
try
{
localizationId = await _localizationRepository.InsertLocalization(new Localization
{
English = request.NameEN,
Albanian = request.NameAL,
Macedonian = request.NameMK
});
}
catch (Exception e)
{
scope.Dispose();
Log.Error("Unable to insert localization {@Exception}", e);
throw ExceptionHandler.ThrowException(ErrorCode.Localization_UnableToInsert);
}

try
{
await _categoryRepository.InsertCategory(new Category
{
Name = request.NameEN,
LocalizationId = localizationId
});
}
catch (Exception e)
{
scope.Dispose();
Log.Error("Unable to insert category {@Exception}", e);
throw ExceptionHandler.ThrowException(ErrorCode.Category_UnableToInsert);
}
scope.Complete();
scope.Dispose();
}
我找到了答案。我找了这么长时间,但在我发帖后,我找到了答案,哈哈。刚刚在构造事务范围时添加了TransactionScopeAsyncFlowOption.Enabled

相关内容

最新更新