Я использую Silverlight4 и Ria Service:
Представляем, что у нас есть таблица (называемая «MyTable») с 3 записями (1, 2, 3), я только что написал следующие коды где-то вмое приложение:
CurrentItem = 1;
MyContext.MyTables.Delete(CurrentItem);
CurrentItem = 2;
MyContext.MyTables.Delete(CurrentItem);
По некоторым причинам, прежде чем нажать кнопку «Сохранить», я хочу отклонить первый удаленный элемент (1), но все еще хочу удалить второй (2). Это означает, чтоЯ не могу использовать:
MyContext.RejectChanges()
Потому что он отклонит все изменения (включая удаленный элемент, который я хочу удалить), поэтому я, используя IRevertibleChangeTracking, могу решить мою проблему. Что-то вроде этого:
((IRevertibleChangeTracking) MyItem).RejectChanges();
Но прежде чем использовать этот интерфейс, я должен получить доступ к удаленному элементу.Сначала он пытался получить его через MyContext.MyTables, но он не содержит удаленных записей, поэтому я попытался получить его с помощью EntityChangeSet:
EntityChangeSet Changes = MyContext.EntityContainer.GetChanges();
MyTable DeletedItem = Changes.First<MyTables>( e => e.ID = 1 ) ;
А затем я использовал IRevertibleChangeTracking:
((IRevertibleChangeTracking) DeletedItem ).RejectChanges();
Но после выполнения, эта строка кода не изменила состояние записи и была сохранена как «Удаленная», поэтому, нажав кнопку «Сохранить», она была физически удалена из базы данных !!!!Кажется, IRevertibleChangeTracking не работает для удаленных / добавленных элементов (он работает только для измененных элементов).
Итак, есть ли способ отклонить определенный удаленный элемент из DomainContext.
Спасибо,