/// <summary>
        /// 添加权限信息
        /// </summary>
        /// <param name="sysMenuDto"></param>
        /// <returns></returns>
        public async Task AddAsync(IEnumerable <SysPermissionDto> sysMenuDto)
        {
            List <SysPermission> sysRoleMenus = new List <SysPermission>();
            string  RoleId  = sysMenuDto.FirstOrDefault().RoleId;
            SysRole sysRole = await _sysRoleService.GetObjectAsync(_ => _.Id == RoleId);

            //
            foreach (var item in sysMenuDto)
            {
                item.RoleCode = sysRole.RoleCode;
                SysPermission sysPermission = new SysPermission(item);
                sysRoleMenus.Add(sysPermission);
            }
            #region 正确方式1 传统方式
            //var db = BaseData.BaseDB.BaseDataContext;
            //IEnumerable<SysPermission> entitis = await db.Set<SysPermission>().Where(o => o.RoleId == sysMenuDto.FirstOrDefault().RoleId).ToListAsync();
            //db.Set<SysPermission>().RemoveRange(entitis);
            //db.Set<SysPermission>().AddRange(sysRoleMenus);
            //await db.SaveChangesAsync();
            //await DbToCacheAsync();//暂时
            #endregion

            #region 异常方法
            //await BeginTransactionAsync(async () =>
            //{
            //    IEnumerable<SysPermission> entitis = await GetFullListAsync(_ => _.RoleId == sysMenuDto.FirstOrDefault().RoleId);
            //    await DeleteAllAsync(entitis);
            //    await SaveObjectListAsync(sysRoleMenus);
            //    await DbToCacheAsync();//暂时
            //});
            #endregion
            #region 正确方式2 多次调用DbContext.SaveChanges 方式
            // https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/connection-resiliency#execution-strategies-and-transactions
            await ServiceBase.ResilientTransaction.New(BaseData.BaseDB.BaseDataContext).ExecuteAsync(async() =>
            {
                IEnumerable <SysPermission> entitis = await GetFullListAsync(_ => _.RoleId == sysMenuDto.FirstOrDefault().RoleId);
                await DeleteAllAsync(entitis);           // 此处会调用SaveChangeAsync
                await SaveObjectListAsync(sysRoleMenus); // 此处会调用SaveChangeAsync
                await DbToCacheAsync();                  //暂时
            });

            #endregion
        }
        /// <summary>
        /// 添加权限信息
        /// </summary>
        /// <param name="sysMenuDto"></param>
        /// <returns></returns>
        public async Task AddAsync(IEnumerable <SysPermissionDto> sysMenuDto)
        {
            List <SysPermission> sysRoleMenus = new List <SysPermission>();
            string  RoleId  = sysMenuDto.FirstOrDefault().RoleId;
            SysRole sysRole = await _sysRoleService.GetObjectAsync(_ => _.Id == RoleId);

            //
            foreach (var item in sysMenuDto)
            {
                item.RoleCode = sysRole.RoleCode;
                SysPermission sysPermission = new SysPermission(item);
                sysRoleMenus.Add(sysPermission);
            }

            await BeginTransactionAsync(async() =>
            {
                IEnumerable <SysPermission> entitis = await GetFullListAsync(_ => _.RoleId == sysMenuDto.FirstOrDefault().RoleId);
                await DeleteAllAsync(entitis);
                await SaveObjectListAsync(sysRoleMenus);
                await DbToCacheAsync();//暂时
            });
        }