Сообщение = Невозможно использовать 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());
}
}
}