Как вы очищаете изменения в LinqToSql?

2

У меня есть combobox в моем приложении WPF, которое привязано к моему списку объектов в моей модели просмотра. Когда пользователь вносит изменения в выбранный объект и затем выбирает другой элемент перед сохранением, мне нужно очистить сделанные изменения.

Я думал, что могу использовать dataContext.GetChangeSet(). Updates.Clear(), но по какой-то причине коллекция доступна только для чтения.

Я также пытался использовать dataContext.Refresh, но это не работает, поскольку объект не существует в базе данных, я создал его вручную из SP.

Пожалуйста, помогите. спасибо.

Теги:
wpf
linq-to-sql
datacontext

2 ответа

2
Лучший ответ

Лучше всего, вероятно, повторить запрос в отдельный контекст данных. Вы можете отменить вставку (из набора изменений) с помощью DeleteOnSubmit (и наоборот), но я не хочу, сам.

  • 0
    так вы хотите создать новый текстовый текст и снова получить данные? Если так, то это очень медленно, так как в моей коллекции много предметов. Я надеялся, что где-то будет храниться копия объекта, чтобы можно было откатить любые изменения (например, функцию отмены).
  • 0
    В трекере изменений есть старая версия; но идея контекста данных заключается в том, что он является единицей работы; не база данных. Похоже, вы просто загружаете в него слишком много данных, чтобы начать с ...
Показать ещё 3 комментария
3

Также, используя подход Marc, используя DeleteOnSubmit (или DeleteAllOnSubmit) для удаления вставок, следующее также отменяет любые обновления:

// clears any updates.  
ChangeSet changes = dataContext.GetChangeSet();
dataContext.Refresh(RefreshMode.OverwriteCurrentValues, changes.Updates);   
  • 0
    +1 Работает для обновлений, но не для вставок.
  • 0
    Но я думаю, что нет необходимости очищать вставки, так как вы можете поместить InsertOnSubmit() в блок if-else, который зависит от результата диалога.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню