ABP ModuleZero 添加角色_建立角色是報錯的問題解決方案

ABP升級後,大概3.6.1之後,在.net framework裏面,從官方下載的Module zero模板添加角色是出現下面錯誤。數據庫

這個問題,算是新版apb的一點小缺憾,好像在.net core的模板裏面沒問題。解決方案:app

public override async Task Create(CreateRoleDto input) 
{
    CheckCreatePermission();
    var role = ObjectMapper.Map<Role>(input);
    CheckErrors(await _roleManager.CreateAsync(role));
    var grantedPermissions = PermissionManager
                .GetAllPermissions()
                .Where(p => input.Permissions.Contains(p.Name))
                .ToList();
    //加上下面代碼
    //await CurrentUnitOfWork.SaveChangesAsync();
    await UnitOfWorkManager.Current.SaveChangesAsync(); //這行是後來加的不曉得拼寫錯誤沒有,有錯本身修正,反正大概是這樣
  
    await _roleManager.SetGrantedPermissionsAsync(role, grantedPermissions);
    return MapToEntityDto(role);
}

 

報錯緣由:由於uow是事物提交的,雖然調用了createasync,但事物未提交,數據沒有保存到數據庫,後面執行分配權限獲取不到改角色的id,因此報錯。async

貌似是由於在.net core裏面,執行了XX.CreateAsync()後,若是後面的代碼會用到當前實體,就會自動提交事務,但.netframework裏面不行,因此在分配權限以前咱們要先手動savechange。ide

相關文章
相關標籤/搜索