Używanie Entry <TEntity> () .CurrentValues.SetValues ​​() nie aktualizuje kolekcji

Nie spotkałem się z tym wcześniej, ponieważ zazwyczaj zajmowałem się kolekcjami przez nich samych, zamiast modyfikować je bezpośrednio na elemencie.

public class Schedule: BaseEntity
        {
            public Guid Id {get;set;}
            public virtual int? DayOfTheWeekTypeId { get; set; }
            public virtual DayOfTheWeekType DayOfTheWeekType { get; set; }
            public virtual ICollection<Instructor> Instructors { get; set; }
            public DateTime? StartDateTime { get; set; }
            public DateTime? EndDateTime { get; set; }
            public string SpecialInstructions { get; set; }
        }

Klasa mapowania:

    public ScheduleMapping()
            {
                HasMany(c => c.Instructors).WithMany().Map(m => { m.MapLeftKey("ScheduleId");
m.MapRightKey("InstructorId"); 
m.ToTable("Schedule_Instructors");
                });
                HasOptional(s => s.DayOfTheWeekType).WithMany().HasForeignKey(s => s.DayOfTheWeekTypeId).WillCascadeOnDelete(false);
                Property(s => s.SpecialInstructions).IsMaxLength();
            }

To jest moja metoda aktualizacji:

public virtual void Update(TEntity entity)
        {
            if (entity == null)
                throw new ArgumentNullException("entity");
            //this is the original persisted entity
            var persistedEntity = _repository.GetById(entity.Id);
            if(originalEntity != null)
            {
                entity.Id = persistedEntity.Id;                
                UnitOfWork.ApplyCurrentValues<TEntity>(originalEntity,entity);
                UnitOfWork.Commit();
            }
        }

Jest to metoda, która obsługiwała „scalanie”

public void ApplyCurrentValues<TEntity>(TEntity original, TEntity current) where TEntity : class
        {
            base.Entry<TEntity>(original).CurrentValues.SetValues(current);
        }

Jeśli zmodyfikuję kolekcję Instruktorów, spróbuj zastosować aktualizację, wydaje się, że zachowuje moje oryginalne wartości. Próbowałem wczytać jednostkę Schedule przed aktualizacją i wprowadzić zmiany, ale czasami powoduje to błąd PK (w kolekcji Instruktorów) w strukturze encji. Tak jakby próbował dodać obiekt za pomocą tego samego klucza. Zamiast tego ręcznie odbudowuję jednostkę Harmonogramu (w tym ID), a następnie aktualizuję ją. Kiedy to robię, nie dostaję więcej błędów, jednak zbiory Instruktorów się nie zmieniają. Myślę, ponieważ CurrentValues. SetValues ​​jest stosowany na podstawie trwałej encji, a nie mojej zaktualizowanej wersji. Czy powinienem obsługiwać moje aktualizacje inaczej lub czy muszę manully

questionAnswers(1)

yourAnswerToTheQuestion