/// <summary> /// Отменяет все внесенные изменения /// </summary> protected void UndoChanges() { if (!SaveUndoCommandCanExecute) { return; } //Помечаем к удалению записи, которые больше не связаны с земельным участком DeleteDetailRecordTogetherRelationship(); //Удаляем из кэша участков добавленные в данном сеансе редактирования var addParcel = ContextDb.ChangeTracker.Entries <Parcelle>().Where(p => p.State == EntityState.Added); foreach (var del in addParcel) { Parcels.Remove(del.Entity); } //Отменяем все изменения в БД ContextDb.DiscardAllChanges(); //Возвращаем из кэша удаленные земельные участки foreach (var del in ParcelsDelete) { Parcels.Add(del); } ParcelsDelete.Clear(); //Уведомляем об изменении свойств RaisePropertyChanged(nameof(Parcels)); RaisePropertyChanged(nameof(ParcelsViewSource)); }
/// <summary> /// Помечает участок к удалению из базы данных и удаляет его из списка<see cref="Parcels"/> /// </summary> /// <param name="parcel">Удаляемые земельный участок</param> /// <remarks>Удаленный участок сохраняется в кэше <see cref="ParcelsDelete"/></remarks> public void DeleteParcelle(Parcelle parcel) { if (Parcels.Contains(parcel)) { //Сохраняем сведения об удаленном участке для поддержки отмены операции if (ContextDb.Entry(parcel).State != EntityState.Added) { ParcelsDelete.Add(parcel); } ContextDb.JuridiqueObjets.Remove(parcel); Parcels.Remove(parcel); //Уведомляем об изменении свойств RaisePropertyChanged(nameof(ParcelsViewSource)); RaisePropertyChanged(nameof(Parcels)); } }