У меня проблема с обновлением моей БД с использованием Linq для сущностей.Linq для объектов: обновление создает новую строку
У меня есть 2 объекта: Сообщение и автор Мое приложение проверяет веб-сервис и вытягивает сообщения и авторов из службы.
В моей базе данных уже существует сообщение и автор, поэтому я проверяю дубликаты.
Это хорошо работает для автора. Новые авторы добавляются, существующие обновляются.
Однако сообщения дают мне странную проблему. Сообщение имеет очевидное отношение к автору, поэтому я добавляю автора в мое сообщение, вызывая Message.Author = Author; , где автор - новый или обновленный автор моего предыдущего шага.
По-видимому, как только я это сделаю, а позже в моем коде, отправьте изменения, сущность framework/linq решит добавить это новое сообщение в БД, даже без моего вызова объекта упоминания. Вероятно, это связано с тем, что автор связан с ним.
Может ли кто-нибудь дать мне правильный способ в псевдокоде или что-то вставить/обновить как автора, так и сообщение, используя Linq для сущностей?
Таким образом, EntityState.Unchanged для сообщения сообщает EF, что сообщение не было изменено, поэтому EF не увидит его как новый объект? И после этого кодового блока я проверяю, существует ли мое сообщение и выполняет ли вставка/обновление для самого сообщения? – Ron83
Этот блок кода ожидает, что сообщение существует в вашей базе данных, и оно не было изменено. Если вам нужно добавить или обновить его, вы будете использовать аналогичный блок, как для автора. –
К сожалению, приведенное выше решение генерирует следующую ошибку в строке EntityState.Unchanged: Заявление об обновлении, вставке или удалении Store повлияло на неожиданное количество строк (0). Объекты могут быть изменены или удалены, поскольку объекты загружены. Обновить записи ObjectStateManager. – Ron83