Раньше это работало, но с самого начала было написано неправильно, потому что оно действительно использует некоторую внутреннюю магию, и в вашем примере это можно назвать побочным эффектом.Вам следует избегать кода, который выполняет некоторую логику через побочные эффекты.
Магия заключается в автоматическом исправлении навигационных свойств.Вы создаете новый Vote
и устанавливаете его Publication
свойство навигации с экземпляром Publication
, присоединенным к контексту.В этом случае EF установит для вас отношения, а также внутренне добавляет Vote
к Publication
.Из-за исправления новый Vote
также будет отслеживаться (как новая сущность).
Ваши пользовательские классы, используемые в коде вначале, не имеют методов исправления, если вы не напишите их вручную или не скопируетеони из кода, сгенерированного шаблоном POCO T4, который сначала использовался в модели и базе данных.Без исправления новый Vote
не будет добавлен в контекст, а SaveChanges
не будет выполнять никаких изменений.
Используйте код @ Diego для исправления вашего метода.