ASP.NET 样板实体立即提交

ASP.NET Boilerplate Entity commit immediately

我已经开始使用 ASP.NET 样板中的实体。我试图让我的实体立即提交到数据库,但我似乎做不到。

我打电话给await CreateAsync(EntityDto);.

我已经尝试覆盖控制器中的 CreateAsync 以包含 CurrentUnitOfWork.SaveChanges();

我也尝试过将代码包装在一个工作单元中。

        using (var unitOfWork = _unitOfWorkManager.Begin())
        {
            var entityDto = await CreateAsync(entityDto);
            await unitOfWork.CompleteAsync();
        }

但它似乎从未立即提交给数据库。

如有任何帮助,我们将不胜感激。

根据official document,你只需要使用当前工作单元的SaveChangesSaveChangesAsync方法即可。

请注意,如果当前工作单元是事务性的,那么如果发生异常,事务中的所有更改都会回滚。甚至保存的更改。

ABP 的 Conventional Unit of Work is scoped around your Controller action and The unit of work is ambient.

你应该需要一个新的工作单元 TransactionScopeOption.RequiresNew:

using (var unitOfWork = _unitOfWorkManager.Begin(TransactionScopeOption.RequiresNew))
{
    var entityDto = await CreateAsync(entityDto);
    await unitOfWork.CompleteAsync();
}

或者,您可以使用 TransactionScopeOption.Suppress 隐藏工作单元:

using (var unitOfWork = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress))
{
    var entityDto = await CreateAsync(entityDto);
    await unitOfWork.CompleteAsync();
}