ObjectContext обновить объект из отсоединенного состояния - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть ObjectContext с методом обновления. Метод принимает универсальный объект в качестве параметра. Мне нужно прикрепить этот объект к ObjectContext и обновить базу данных с изменениями, которые имел объект. Например, я создаю новый объект, который имеет тот же ключ и сущность в базе данных, но некоторые поля отличаются. Я хочу прикрепить объект к соответствующему объекту в базе данных и сохранить изменения, внесенные в новый объект. Вот что я имею в методе обновления:

public void Update(BaseObject data, entitySetName)
{
    AttachTo(entitySetName, data);
    Refresh(RefreshMode.ClientWins, data);
    SaveChanges();
}

После обновления данные перезаписываются полями из базы данных. Выход из обновления также не обновляет запись базы данных. Я пропускаю шаг?

Ответы [ 2 ]

4 голосов
/ 01 сентября 2011

Метод DetectChanges () обновит состояние объекта до измененного, если были внесены какие-либо изменения.

С MSDN : " В объектах POCO без прокси-серверов отслеживания изменений состояние измененных свойств изменяется на Изменено при вызове метода DetectChanges. После сохранения изменений состояние объекта изменяется на Без изменений."

context.DetectChanges();

Кроме того, вы можете просто установить состояние на изменение, чтобы ваш метод всегда пытался обновить независимо от того, изменилось ли что-либо или нет:

ObjectStateManager.ChangeObjectState(data, EntityState.Modified);
1 голос
/ 01 сентября 2011

Используйте просто:

public void Update(BaseObject data, entitySetName)
{
    AttachTo(entitySetName, data);
    ObjectStateManager.ChangeObjectState(data, EntityState.Modified);
    SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...