public int Save() { return(_ctx.SaveChanges()); }
public void SetPermissions(AuthorizationObjectType objType, int id, string[] permissionCodes) { IEnumerable <Permission> originalPermissions = null; switch (objType) { case AuthorizationObjectType.User: var user = _ctx.User.SingleOrDefault(u => u.Id == id && !u.IsDeleted && u.IsAdmin); if (user != null) { user.LastModificationTime = DateTime.Now; originalPermissions = _ctx.Permission.Where(p => p.UserId == id); } else { ThrowException("用户不存在"); } break; case AuthorizationObjectType.Role: var role = _ctx.Role.SingleOrDefault(r => r.Id == id && !r.IsDeleted); if (role != null) { role.LastModificationTime = DateTime.Now; originalPermissions = _ctx.Permission.Where(p => p.RoleId == id); } else { ThrowException("角色不存在"); } break; } if (originalPermissions != null) { if (originalPermissions.Any()) { _ctx.Permission.RemoveRange(originalPermissions); } var permissions = permissionCodes?.Select(code => new Permission { Code = code, CreationTime = DateTime.Now }) .ToList(); if (permissions != null && permissions.Any()) { switch (objType) { case AuthorizationObjectType.User: permissions.ForEach(p => p.UserId = id); break; case AuthorizationObjectType.Role: permissions.ForEach(p => p.RoleId = id); break; } _ctx.Permission.AddRange(permissions); } _ctx.SaveChanges(); } }