Сообщение = Невозможно использовать Reload для сущностей в состоянии Added. Источник = EntityFramework

Visual Studio, C#, EntityFramework, WPFapp.

Я хочу отредактировать свою базу данных, но получаю эту ошибку. Я могу добавлять новые элементы, могу удалять, но не могу их редактировать. База данных успешно обновляется в режиме реального времени на моем сервере sql. Я пытался переименовать кнопки, но я думаю, что это было глупо. Думаю, может, проблема в том, что моя база данных восстановленная? Все таблицы сделаны по одинаковому принципу.

Сообщение = Невозможно использовать Reload для сущностей в состоянии Added.

В строке

Toy_StoreEntities1.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());

Но это сообщение идет по причине невозможности сохранения. Один раз мне удалось поймать исключение на строке

Toy_StoreEntities1.GetContext().SaveChanges();

Которая говорила, что не может сохранить данные из-за ключа, который уже совпадает. Вроде, Primary Key. Т.е он не может перезаписать, потому что такое уже существует? К сожалению, я не знаю как получилось вывести именно это исключение, потому что в последующие разы получалось то же самое, что в первом сообщении. Я новичок в этом деле, поэтому, возможно, есть способы подробного вывода исключений.

Пример таблицы:

WorkersPage.xaml.cs.

    {
        public WorkersPage()
        {
            InitializeComponent();
            
            
        }
       
        private void BtnEdit_Click(object sender, RoutedEventArgs e)
        {
            Manager.MainFrame.Navigate(new WorkersEditAdd((sender as Button).DataContext as Workers));
        }
        private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (Visibility == Visibility.Visible)
            {
                Toy_StoreEntities1.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());
                DGridWorkers.ItemsSource = Toy_StoreEntities1.GetContext().Workers.ToList();
            }
        }

    } 

и WorkersEdditAdd.xaml.cs.

    {
        private Workers _currentWorkers = new Workers();
        public WorkersEditAdd(Workers selectWorkers)
        {
            InitializeComponent();

            if(selectWorkers != null)
                _currentWorkers= selectWorkers;
            DataContext = _currentWorkers;
            ComboFunctions.ItemsSource = Toy_StoreEntities1.GetContext().Functions.ToList();
        }
        private void BtnSave_Click(object sender, RoutedEventArgs e)
        {
            StringBuilder errors = new StringBuilder();

            if (string.IsNullOrWhiteSpace(_currentWorkers.First_name))
                errors.AppendLine("Please enter First name");
            if (string.IsNullOrWhiteSpace(_currentWorkers.Last_name))
                errors.AppendLine("Please enter Last name");
            if (string.IsNullOrWhiteSpace(_currentWorkers.Third_name))
                errors.AppendLine("Please enter Third name");
            if (_currentWorkers.Salary < 0)
                errors.AppendLine("Please enter a number of Salary more than 0");
            if (_currentWorkers.Key <= 0)
                errors.AppendLine("Please enter a number of Key more than 0");
            if (_currentWorkers.Functions == null)
                errors.AppendLine("Choose a function");

            if (errors.Length > 0)
            {
                MessageBox.Show(errors.ToString());
                return;
            }

            Toy_StoreEntities1.GetContext().Workers.Add(_currentWorkers);
            
            try
            {
                Toy_StoreEntities1.GetContext().SaveChanges(); 
                MessageBox.Show("Information has been saved!");
                Manager.MainFrame.GoBack();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    } 

Ответы (0 шт):