Exemplo n.º 1
0
        /// <summary>
        /// Дополнительные изменения в БД после обновления данных сущности в БД.
        /// </summary>
        /// <param name="db">контекст БД</param>
        /// <param name="entity">обновляемая в БД сущность</param>
        public void AfterUpdate(ApplicationDBContext db, Room entity)
        {
            if (UserIds == null)
            {
                return;
            }

            if (entity.Users == null)
            {
                entity.Users = new List <User>();
            }

            var userIdsToBeAdded = UserIds;
            var usersToBeDeleted = entity.Users
                                   .Where(us => UserIds.All(usId => usId != us.Id)).ToList();

            foreach (var user in usersToBeDeleted)
            {
                entity.Users.Remove(user);
            }

            userIdsToBeAdded = UserIds
                               .Where(usId => entity.Users.All(us => us.Id != usId)).ToList();

            foreach (var userId in userIdsToBeAdded)
            {
                entity.Users.Add(db.Set <User>().Find(userId));
            }
        }