Удаление Linq-to-SQL из ChangeSet - PullRequest
2 голосов
/ 08 ноября 2011

У меня есть ObservableCollection<Widget>, который на NotifyCollectionChangedAction.Add выполняет context.Widget.InsertOnSubmit(addedWidget).

Перед выполнением context.SubmitChanges() мне нужно удалить один из добавленных элементов, так как он больше не нужен, однако можетвсе еще будут элементы в context.GetChangeSet().Inserts, которые я все еще хочу вставить.

Можно ли отменить определенную вставку / удаление, не выбрасывая DataContext и не запуская снова?

1 Ответ

5 голосов
/ 08 ноября 2011

После вызова context.Widget.InsertOnSubmit(addedWidget) вы можете удалить addedWidget из фактической вставки до SubmitChanges, используя:

context.GetTable(Widget.GetType()).DeleteOnSubmit(addedWidget);
context.SubmitChanges(); // the insert simply doesn't happen.

Это просто удаляет addedWidget из контекста, который он первоначально собиралсядобавлять.Я бы предположил, что если у вас все еще есть deletedWidget, вы можете InsertOnSubmit(deletedWidget), и он не будет удален.

...