Сохранение отключенного объекта в платформе сущностей 4 - PullRequest
2 голосов
/ 23 ноября 2010

в EF1, я не мог просто обновить объект, который был построен (с правильным идентификатором) вне области ObjectContext.

Есть ли новый способ в EF4?

Могу ли я просто добавить его в контекст (context.AddOrder(order)) (где контекст является экземпляром моего ObjectContext) и «он» видит, что у него есть идентификатор, и обновляет его?

Это не poco, поэтому мои объекты наследуются отEntityObject

Ответы [ 3 ]

5 голосов
/ 23 ноября 2010

Если это совершенно новый объект, вам следует использовать либо ObjectContext.AddObject или ObjectSet.AddObject:
Метод AddObject предназначен для добавления вновь созданных объектов, которые не существуют в базе данных.Сущность получит автоматически сгенерированный временный EntityKey , а его EntityState будет установлен на Added .

С другой стороны ObjectContext.Attach и ObjectSet.Attach используется для объектов, которые уже существует в базе данных.Вместо того, чтобы устанавливать EntityState в значение Added, Attach приводит к Unchanged EntityState, что означает, что оно не изменилось с момента его присоединения к контексту.Предполагается, что присоединяемые объекты существуют в базе данных.

Для более подробного обсуждения этой темы, пожалуйста, взгляните на этот пост:
Entity Framework 4 - AddObjectvs Attach

2 голосов
/ 23 ноября 2010

Вместо этого используйте метод присоединения .Предназначен для отключенных объектов.

1 голос
/ 19 марта 2011

Взято из Стартового комплекта информации о сотрудниках , вы можете рассмотреть фрагмент кода, как показано ниже:

public void UpdateEmployee(Employee updatedEmployee)
        {
            //attaching and making ready for parsistance
            if (updatedEmployee.EntityState == EntityState.Detached)
                _DatabaseContext.Employees.Attach(updatedEmployee);
            _DatabaseContext.ObjectStateManager.ChangeObjectState(updatedEmployee, System.Data.EntityState.Modified);
            _DatabaseContext.SaveChanges();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...