Как обновить ВСЕ грязные объекты из хранилища данных и сбросить их измененные значения до исходного значения хранилища?
Метод ObjectContext.Refresh требует обновления объектов в качестве параметра.
Как обновить ВСЕ грязные объекты из хранилища данных и сбросить их измененные значения до исходного значения хранилища?
Метод ObjectContext.Refresh требует обновления объектов в качестве параметра.
Обычно работает следующее:
Context.Refresh(RefreshMode.StoreWins, _
Context.ObjectStateManager.GetObjectStateEntries())
Иногда это вызывает проблемы с EntityRelations. посмотрите на мой комментарий для получения дополнительной информации.
GetObjectStateEntries()
требует параметр (например, Modified), и когда я передаю его, я получаю исключение, что объект отключен от контекста. Любые идеи?
- person Sam Selikoff; 13.01.2014
Вы можете использовать этот код:
public void RefreshAll()
{
// Get all objects in statemanager with entityKey
// (context.Refresh will throw an exception otherwise)
var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(
EntityState.Deleted
| EntityState.Modified
| EntityState.Unchanged)
where entry.EntityKey != null
select entry.Entity);
context.Refresh(RefreshMode.StoreWins, refreshableObjects);
}
Я написал сообщение о том, как RefreshAll() и обновить контекст другими способами:
var addedEntries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).ToList(); addedEntries.ForEach(entry => entry.Delete());
- person AncientSyntax; 06.03.2015
Если вы хотите сбросить ВСЕ изменения, вы можете установить для ObjectContext
значение null и повторно создать его экземпляр.
Я верю, что это достигнет того, чего вы хотите.
Доброта,
Дэн
Мы используем это:
return Context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Deleted
System.Data.EntityState.Modified).All(ose
=> {
if(ose.Entity != null)
Context.Refresh(RefreshMode.StoreWins, ose.Entity);
return true;
});
Где «Контекст» — это контекст для обновления. Мы фильтруем по состоянию изменения и сущностям, чтобы избежать появления новых сущностей и отношений.