Я использую 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.
Спасибо,