Изменить состояние объекта

entity-framework

Вопрос

В настоящее время у меня есть модель сущности с кучей удаленных элементов, состояние удалено. Есть ли способ «восстановить» их? Я знаю, какие элементы я хочу восстановить, но я не знаю, как их удалить. В идеале я хотел бы вернуть его в неизменное состояние.

Принятый ответ

У вас есть возможность просто не фиксировать контекст соединения? - избавьтесь от ObjectContext без вызова objectContext.SaveChanges (); Конечно, если у вас есть определенные изменения, которые вы не хотите сохранить, они также не сохранятся.

Если вы вызвали objectContext.DeleteObject(x) вы не сможете отменить его и сохранить изменения.

ObjectStateEntry objectStateEntry = objectContext.ObjectStateManager.GetObjectStateEntry(x);

// objectStateEntry.State is not setable 

ObjectStateEntry имеет свойство OriginalValues, так что теоретически вы можете тщательно воссоздать коллекцию, которая представляет исходные изменения, за исключением нежелательных, выйти из objectContext, открыть новое и перестроить эти изменения за вычетом нежелательных. Вероятно, не стоит хлопот, но в настоящее время не существует документированного способа отменить пометку для удаления.


Популярные ответы

после звонка

objectContext.DeleteObject (x) ,

вы можете смоделировать восстановление объекта x с помощью

objectContext.Detach (х); objectContext.Attach (х)



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow