Ответ 1
Как насчет изменения ObjectState
?
context.ObjectStateManager.ChangeObjectState(job, System.Data.EntityState.Modified);
Я пытаюсь обновить объект POCO, используя инфраструктуру сущности, следующим образом:
context.Jobs.Attach(job);
context.SaveChanges();
Это не работает. Ошибка не возникает, она просто не обновляет значения в базе данных.
Я пробовал:
context.Jobs.AttachTo("Jobs", job);
context.SaveChanges();
Ничего плохого, по-прежнему нет ошибок и обновлений.
Как насчет изменения ObjectState
?
context.ObjectStateManager.ChangeObjectState(job, System.Data.EntityState.Modified);
Я думаю, вы работаете с отдельным объектом - проверьте вторую часть этого ответа.
вам нужно сначала выполнить задание, после чего вы можете успешно его обновить, chk ниже фрагмента
var job = context.Jobs.Where(p => p.Id == id).FirstOrDefault();
//apply your changes
job.Title = "XXXX";
///....
context.SaveChanges();
Другая причина, по которой это может не работать, - это когда соответствующий файл Jobs.cs был зафиксирован, но файл .edmx не имеет. Это означает, что свойство присутствует, но не отображено, и поэтому EF не рассматривает измененный объект. Например:
...
using (var dao = new DbContext())
{
dao.Jobs.Attach(job);
job.SomeProperty = 1234; // SomeProperty exists but is not in the .edmx
dao.SaveChanges();
}
если SomeProperty присутствует в Jobs.cs, но отсутствует в файле .edmx, этот код будет компилироваться и выполняться без подсказки, что что-то не так, но SomeProperty не будет обновляться в базе данных. Принесли мне лучшую часть дня, чтобы найти этот.