Проблема в том, что когда вы присваиваете findContact = contact
, EntityState
не изменяется в ObjectStateManager
(поэтому он по-прежнему установлен на Unchanged
).Следовательно, Update
SQL-оператор не генерируется для сущности.У вас есть несколько вариантов обновления:
Опция 1: Заполните findContact
поле за полем:
var findContact = GetContact(contact.ContactID);
findContact.FirstName = contact.FirstName;
findContact.LastName = contact.LastName;
...
_context.SaveChanges();
Опция 2: Используйте метод ApplyCurrentValues
:
var findContact = GetContact(contact.ContactID);
_context.ApplyCurrentValues("Contacts", contact);
_context.SaveChanges();
Опция 3: Присоедините обновленный объект и измените состояние в ObjectStateManager
.(Примечание: это не приведет к обращению в базу данных для извлечения существующего контакта).
_context.AttachTo("Contacts", contact);
var contactEntry = Context.ObjectStateManager.GetObjectStateEntry(contact);
contactEntry.ChangeState(EntityState.Modified);
_context.SaveChanges();