Есть приложение WPF (паттерн MVVM) с двумя окнами (Авторизация и главное окно...).
Если пользователь вводит правильно логин и пароль, я передаю объект User(со всеми данными) в новое окно. В свою очередь в новом окне, этот объект сохраняется в свойство:
public User User
{
get { return _user; }
set
{
_user = value;
NotifyPropertyChanged(m => m.User);
}
}
NotifyPropertyChanged — метод из SimpleMvvmToolkit.
И тепер главная проблема. Когда я пытаюсь сохранить любые данные(даже другие модели) методом db.SaveChanges(), первым делом проходит запрос в БД на Insert этого же User(тот что записан в свойством). И конечно я ловлю Exception, что уже такой пользователь существует.
Надеюсь понятно объяснил ситуацию. Могу еще какие-то куски кода скинуть, если это поможет решить проблему. Спасибо
У меня в методах, где нужно было изменить какие-то данные в БД, использовался новый экземпляр контекста, это и стало причиной появления данной ошибки. Первым делом я объявил контекст лишь один раз, чтобы далее его использовать в методах.
Ну и чтобы убрать ошибку, я теперь передаю из окна авторизации на главное окно не только объект User, но и уже созданный экземпляр контекста
Главная причина данного явления, это что новый экземпляр контекста пытался вставить уже существующую сущность, так как эта сущность была получена в другом контексте
Контекст -- это класс, производный от DbContext
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости