/// <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));
            }
        }