ABP ModuleZero 添加角色_创建角色是报错的问题解决方案

本文介绍了解决ABP框架3.6.1版本之后,在.NET Framework环境下使用ModuleZero模板时遇到的角色添加错误问题。该错误源于单元工作(UOW)事务管理机制导致的数据提交延迟,使得后续权限分配无法正常进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABP升级后,大概3.6.1以后,在.net framework里面,从官方下载的Module zero模板添加角色是出现下面错误。

这个问题,算是新版apb的一点小缺憾,好像在.net core的模板里面没问题。解决方案:

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,所以报错。

貌似是因为在.net core里面,执行了XX.CreateAsync()后,如果后面的代码会用到当前实体,就会自动提交事务,但.netframework里面不行,所以在分配权限之前我们要先手动savechange。

转载于:https://www.cnblogs.com/hpnet/p/9103695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值