powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# ef отмена изменений в сущности со статусом Added
21 сообщений из 21, страница 1 из 1
c# ef отмена изменений в сущности со статусом Added
    #39717503
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро!

У меня вопрос, к уважаемой аудитории, заключающийся в следующем: возможно ли отменять изменения в сущности со статусом EntityState.Added, по отдельным свойствам или всем сразу?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var context = ((IObjectContextAdapter)myDbContext).ObjectContext;
var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(
                                           EntityState.Added
                                           | EntityState.Deleted
                                           | EntityState.Modified
                                           | EntityState.Unchanged)
                          where entry.EntityKey != null
                          select entry.Entity).ToList();

context.Refresh(RefreshMode.StoreWins, refreshableObjects);
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717528
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,

Обычный режим это время жизни этих статусов доли секунды.
Т.е. вы за долю сек. добавили в коллекцию сущность и сразу отмену делаете?
Непонятная постановка.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717549
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Nechto,

Обычный режим это время жизни этих статусов доли секунды.
Т.е. вы за долю сек. добавили в коллекцию сущность и сразу отмену делаете?
Непонятная постановка.

Пользователь создал создал новую сущность, внес/отредактировал данные, и после сохранил. Про какие секунды идёт речь?
Я хочу выяснить следующее, можно ли как-то отменять внесенные изменения в сущность статусом Added, до того как данные были сохранены.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717580
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NechtoПользователь создал создал новую сущность,на клиенте?
Тогда на сервере контекст еще не получали.

Nechtoпосле сохранил.вот тут стартует бизнес транзакция и через 0,01 сек будет коммит.
В общем случае и проектах с короткими транзакциями.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717598
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NechtoEntityState.Added,entry. State = EntryState. Detached
Но повторюсь, лучше отменить всё через перезагрузку контекста или клонировать сущности.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717599
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123на клиенте?
Тогда на сервере контекст еще не получали.Кто тут вообще что-то говорил про клиент-сервер?

Возможно у ТС локальная однопользовательская система
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717601
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВозможно у ТС локальная однопользовательская системаодин фиг не рекомендуется ручной режим ковыряния в контексте.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717608
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВозможно у ТС локальная однопользовательская системаэто я оставил для других рассказчиков.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717614
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123один фиг не рекомендуется ручной режим ковыряния в контексте.А можно узнать автора рекомендаций, ссылочками может поделишься?


Petro123это я оставил для других рассказчиков.
Это я к тому, что раньше ты просто читал вопросы через одну строчку, то теперь ты взялся сочинять за ТС - что-то новенькое
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717615
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Вы все стремитесь к единственно правильному ответу)))).
Не бывает.
Разговариваем с автором.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717619
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proсочинять за ТС - что-то новенькоеэээх ты)))
Везде это хрустальный шар называется. Походи на другие ветки).
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717624
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proссылочками может поделишься?Ladislav Mrnka 314000 лайков))))
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717629
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProPetro123один фиг не рекомендуется ручной режим ковыряния в контексте.А можно узнать автора рекомендаций, ссылочками может поделишься?


Petro123это я оставил для других рассказчиков.
Это я к тому, что раньше ты просто читал вопросы через одну строчку, то теперь ты взялся сочинять за ТС - что-то новенькое


Ковыряние в контексте, в принципе получилось успешно, но есть одно но:
1. Нет возможности вернуть изменения так как у Added origionValue не определен (что вполне логично, так как это результат селекта), есть только current
2. Нет возможности отслеживать повторных изменений, к примеру коллекции сущности, до того как пользователь вызвал событие сохранить.

В итоге пошел по пути: ToClone(); ToMap(clone)

Я так понимаю это оптимальный вариант. Спасибо за помощь!
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717636
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechtoоптимальный вариант.рациональный наверно.
А оптимально это короче транзакции и бросить кеш/контекст на середине правки.
IMHO
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717652
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Nechtoоптимальный вариант.рациональный наверно.
А оптимально это короче транзакции и бросить кеш/контекст на середине правки.
IMHO
Начала и конец транзакции у меня реализован. Проблема как раз со средними правками.


Сейчас протестировал вариант с клонированием, и сразу возникла проблема с коллекциями.
Код: c#
1.
2.
3.
4.
5.
6.
public class Parent
{
    public int Id { get; set; }
    public string Caption { get; set; }
    public virtual ICollection<Child> Childs{ get; set; }
}



EF ChangeTracker не перестает отслеживание изменений коллекций, которые клонируются целым объектом
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public static T ToClone(this T sender) where T : class, new() {
    var clone = new T();
    foreach (var property in sender.GetType().GetProperties(BindingFlags.Instans | BindingFlags.Public))
    {
          var origValue = sender.GetValue(sender);
          property.SetValue(clone, origValue, null);
    }    
}



Видимо клонирование объекта, должно быть как-то иначе.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717671
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NechtoПроблема как раз со средними правками.а как юзкейс выглядит? Кнопка Назад? Почему частичная отмена?
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717705
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123NechtoПроблема как раз со средними правками.а как юзкейс выглядит? Кнопка Назад? Почему частичная отмена?
Есть кнопка Сохранить и Назад, они едины для всего контента Parent .

Попробую объяснить
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Parent // Основанная страница
{
    public int Id { get; set; }
    public string Caption { get; set; }

    // клонирую класс и открывая pagefunction для редактирования записи
    public virtual ICollection<Child> Childs{ get; set; } 
}

public class Child // pagefunction редактирования клонированной сущности
{
    public int Id { get; set; }
    public int ParentId { get; set; }
    public Parent Parent { get; set; }
    public string Caption { get; set; }
    public virtual ICollection<People> People { get; set; } // При отмене изменений Child, коллекция people все равно отслеживается ef (Про эту проблему я имел ввиду)
}
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717720
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто не используй Entity в качестве модели бизнес-логики. Это годится только для HelloWorld.
Иначе это не последние грабли, с которыми столкнешься
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717736
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,
Боюсь вы веб странички пытаетесь делать через EF.
Или мастер формочку пошаговую с кнопками Вперёд Назад.
Если так, то для этих формочек полно библиотек, либ и шаблонов.
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717737
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,
Учитывая вашу прошлую тему, вы делаете маппинг в динамике?
Не люблю. Удачи!
...
Рейтинг: 0 / 0
c# ef отмена изменений в сущности со статусом Added
    #39717857
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechtoменя вопрос, к уважаемой аудитории, заключающийся в следующем: возможно ли отменять изменения в сущности со статусом EntityState.Added, по отдельным свойствам или всем сразу?

Вообще-то не стоит этого делать.
Не знаю где как, но у нас за подобное отстрел.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# ef отмена изменений в сущности со статусом Added
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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