У меня есть служба WCF, которая использует структуру сущности для извлечения записей из базы данных и сопоставления их с объектами POCO. Эти объекты POCO затем возвращаются в клиентское приложение.Entity Framework 4 Контекстная стойкость POCO через службы
Допустим, клиентское приложение изменяет некоторые свойства на одном из этих объектов POCO и отправляет его обратно в службу WCF для сохранения. Насколько я вижу, этот объект POCO полностью отключен от контекста инфраструктуры сущности. То, как я в настоящее время сохраняю это, - это создать новый объект контекста и снова получить объект POCO из базы данных, затем я копирую значения свойств объекта POCO, переданного в метод, в объект POCO, который просто извлекается из базы данных, а затем вызывает сохранение в контексте. Это лучший способ сделать это или есть более простой метод?
вы просто вызываете метод Attach в таблице, предоставляя объект POCO в качестве параметра. это очень просто. http://msdn.microsoft.com/en-us/library/bb896271.aspx – scripni
Спасибо, я только что попробовал это, и я могу добавить его в контекст с помощью AttachTo, но когда я вызываю context.SaveChanges() изменения не отражаются в базе данных. Я предполагаю, что это связано с тем, что контакт не считает, что он был изменен, поэтому он не сохраняет его. – Gavin
Обнаружена проблема, так как отслеживание изменений было потеряно, вам необходимо вручную установить его как измененный после его присоединения, выполнив что-то вроде этого context.ObjectStateManager.ChangeObjectState (service, EntityState.Modified); – Gavin