Лишний Insert уже существующего объекта в БД (Postgresql)

225
11 сентября 2018, 08:30

Есть приложение WPF (паттерн MVVM) с двумя окнами (Авторизация и главное окно...).

  • Для MVVM использую SimpleMvvmToolkit из NuGet.
  • Для соединения с Postgresql использую Npgsql(который зависит от Entity Framework).

Если пользователь вводит правильно логин и пароль, я передаю объект User(со всеми данными) в новое окно. В свою очередь в новом окне, этот объект сохраняется в свойство:

public User User
{
    get { return _user; }
    set
    {
        _user = value;
        NotifyPropertyChanged(m => m.User);
    }
}

NotifyPropertyChanged — метод из SimpleMvvmToolkit.

И тепер главная проблема. Когда я пытаюсь сохранить любые данные(даже другие модели) методом db.SaveChanges(), первым делом проходит запрос в БД на Insert этого же User(тот что записан в свойством). И конечно я ловлю Exception, что уже такой пользователь существует.

Надеюсь понятно объяснил ситуацию. Могу еще какие-то куски кода скинуть, если это поможет решить проблему. Спасибо

Answer 1

У меня в методах, где нужно было изменить какие-то данные в БД, использовался новый экземпляр контекста, это и стало причиной появления данной ошибки. Первым делом я объявил контекст лишь один раз, чтобы далее его использовать в методах.

Ну и чтобы убрать ошибку, я теперь передаю из окна авторизации на главное окно не только объект User, но и уже созданный экземпляр контекста

Главная причина данного явления, это что новый экземпляр контекста пытался вставить уже существующую сущность, так как эта сущность была получена в другом контексте

Контекст -- это класс, производный от DbContext

READ ALSO
C#. Нажать на input в браузере

C#. Нажать на input в браузере

Доброго времени суток!

268
NativeMessaging c# Chrome

NativeMessaging c# Chrome

Не до конца понимаю как мне связать приложение C# с расширением Chrome

252
C# и SQL Compact Edition

C# и SQL Compact Edition

Работаю с программой, которая включает в себя базу данных SQL Compact Edition 40

225
Неизвестная ошибка при подключении к MySQLi и проблема с ООП

Неизвестная ошибка при подключении к MySQLi и проблема с ООП

PHP, OOP, MySQL У меня проблема с подключением к базе данных MySQL, после того как данные для mysqli_connect() поместил в объект, возвращаемый из статической...

227