禁用SoftDelete for AbpUserRole

默认情况下, 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)); } } 

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

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

数据filter用于选择数据。 如果您的实体是SoftDelete,ABP始终软删除它并阻止实际删除。

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

所以,像这样:

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