如何回滚ASP.NET Core 2中的更改

时间:2019-06-24 15:27:32

标签: c# asp.net-core

我的代码需要帮助。 当前,在我的ASP.NET Core 2应用程序中,我通过以下方式创建用户:

var result = await _userManager.CreateAsync(user, password);

如果成功,则将用户添加到角色,然后对数据库执行其他一些操作。

        if (result.Succeeded)
        {
           var roleResult = await _userManager.AddToRoleAsync(user,"Admin");
           if(roleResult.Succeeded)
           {
            await _repository.AddToGroup("External");
            await _repository.AssignToRoom(RoomEnum.Office);
           }
        }

如果由于某些原因 AddToGroup() AssignToRoom()将失败,则不应创建用户,也不应将其添加到角色中。 我想完全撤消创建用户操作。 如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您需要使用{if $product.grouped_features} <section> <h3>{l s='Data sheet' d='Shop.Theme.Catalog'}</h3> <dl> {foreach from=$product.grouped_features item=feature} <dt>{$feature.name}</dt> <dd>{foreach $feature.value}<span title="{$feature.value|replace:' ':'_'}">{$feature.value|escape:'htmlall'|nl2br nofilter}</span>{/foreach}</dd> {/foreach} </dl> </section> {/if} 类。使用此类,您将拥有TransactionScopeCommit方法,这将有助于您提交整个事务或回滚整个事务。

详细了解Rollback

  1. https://docs.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=netframework-4.8
  2. https://docs.microsoft.com/en-us/ef/ef6/saving/transactions#combining-several-operations-into-one-transaction-within-the-same-context