【问题标题】:Disable SoftDelete for AbpUserRole禁用 Abp 用户角色的软删除
【发布时间】:2018-02-05 14:13:22
【问题描述】:

默认情况下,AbpUserRoleAbpRole 实现 ISoftDelete。是否可以禁用它?

我尝试过这样做:

[AbpAuthorize(AppPermissions.Pages_Administration_Roles_Delete)]
public async Task DeleteRole(EntityDto input)
{
    using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.SoftDelete))
    {
        var role = await _roleManager.GetRoleByIdAsync(input.Id);
        var users = await UserManager.GetUsersInRoleAsync(role.Name);

        foreach (var user in users)
        {
            CheckErrors(await UserManager.RemoveFromRoleAsync(user, role.Name));
        }

        CheckErrors(await _roleManager.DeleteAsync(role));
    }
}

虽然过滤器在当前工作单元中被禁用,但它不起作用。该实体被标记为已删除。

【问题讨论】:

    标签: c# aspnetboilerplate soft-delete


    【解决方案1】:

    本主题回答:https://forum.aspnetboilerplate.com/viewtopic.php?p=6180#p6193

    数据过滤器用于选择数据。如果您的实体是 SoftDelete,ABP 总是软删除它并阻止实际删除。

    您可以覆盖 DbContext 中的 CancelDeletionForSoftDelete 方法并有条件地防止取消。

    所以,像这样:

    protected override void CancelDeletionForSoftDelete(EntityEntry entry)
    {
        if (IsSoftDeleteFilterEnabled)
        {
            base.CancelDeletionForSoftDelete(entry);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2021-03-28
      • 2019-04-07
      相关资源
      最近更新 更多