Я передаю данные между структурой сущностей и бизнес-уровнем и пользовательским уровнем с помощью объектов передачи данных. У меня есть некоторые сомнения, если я получу объект, который преобразуется в DTO, как мне обновить правильный объект в структуре сущностей, а не просто вставить дубликат?
Следующий код обновит сущность EF 4, которая была создана как параметр контроллера в MVC из строго типизированного представления:
Похоже, хитрость заключается в том, чтобы использовать ObjectStateManager для изменения состояния с «Добавлено» на «Изменено» после добавления объекта в контекст.
MyEntities db = new MyEntities();
db.Product.AddObject(product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
return db.SaveChanges() > 0;
Согласно комментарию @Sean Mills, если вы используете EF5:
((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Added);