powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF роллбэк на клиенте
2 сообщений из 2, страница 1 из 1
EF роллбэк на клиенте
    #36527112
SculptoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как откатить все изменения внесенные в данные с момента создания контекста?

Вот такая штука

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var toRefresh = new List<object>();
var singleStateList = context.Model.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Where(entry => !entry.IsRelationship).Select(entry => entry.Entity).Where(entity => entity != null);
toRefresh.AddRange(singleStateList);
singleStateList = context.Model.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).Where(entry => !entry.IsRelationship).Select(entry => entry.Entity).Where(entity => entity != null);
toRefresh.AddRange(singleStateList);
singleStateList = context.Model.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted).Where(entry => !entry.IsRelationship).Select(entry => entry.Entity).Where(entity => entity != null);
toRefresh.AddRange(singleStateList);
context.Model.Refresh(RefreshMode.StoreWins, toRefresh);

падает с криком

System.InvalidOperationException: The element at index 0 in the collection of objects to refresh is in the added state. Objects in this state cannot be refreshed.
...
Рейтинг: 0 / 0
EF роллбэк на клиенте
    #36527153
SculptoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришло временное решение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var toRefresh = new List<object>();
var singleStateList = context.Model.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Where(entry => !entry.IsRelationship).Select(entry => entry.Entity).Where(entity => entity != null);
foreach (var element in singleStateList)
{
    context.Model.Detach(element);
}
context.Model.AcceptAllChanges();
singleStateList = context.Model.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged).Where(entry => !entry.IsRelationship).Select(entry => entry.Entity).Where(entity => entity != null);
toRefresh.AddRange(singleStateList);
context.Model.Refresh(RefreshMode.StoreWins, toRefresh);



Может кто знает лучше???
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF роллбэк на клиенте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]