示例#1
0
        public async Task Update(SecurityGroupUserDTO dto)
        {
            var oldSecurityGroups = DataContext.SecurityGroupUsers.Where(x => x.UserID == dto.UserID);


            var newSecurityGroupUsers = dto.SecurityGroups.Where(d => !oldSecurityGroups.Select(x => x.SecurityGroupID).Contains(d.ID)).Select(x => new SecurityGroupUser
            {
                UserID          = dto.UserID,
                SecurityGroupID = x.ID
            });

            var dtoSecurityIDs           = dto.SecurityGroups.Select(x => x.ID);
            var deleteSecurityGroupUsers = (from d in oldSecurityGroups
                                            let ids = d.SecurityGroupID
                                                      where !dtoSecurityIDs.Contains(ids)
                                                      select d);

            if (newSecurityGroupUsers.Count() > 0)
            {
                DataContext.SecurityGroupUsers.AddRange(newSecurityGroupUsers);
            }

            if (deleteSecurityGroupUsers.Count() > 0)
            {
                DataContext.SecurityGroupUsers.RemoveRange(deleteSecurityGroupUsers);
            }

            await DataContext.SaveChangesAsync();
        }
示例#2
0
        public SecurityGroupUserDTO Get(Guid userID)
        {
            var sg = new SecurityGroupUserDTO();

            sg.UserID = userID;

            sg.SecurityGroups = (from sgs in DataContext.SecurityGroupUsers.AsNoTracking()
                                 where sgs.UserID == userID
                                 select new SecurityGroupDTO
            {
                ID = sgs.SecurityGroupID, Name = sgs.SecurityGroup.Name
            });

            return(sg);
        }