2

Я использую Silverlight4 и Риа Сервис:отклонять конкретный удаленный элемент из DomainContext

визуализации у нас есть таблица (так называемый «MyTable») с 3 записей (1, 2, 3), я просто написал следующие коды где-то в моем приложении:

CurrentItem = 1; 
MyContext.MyTables.Delete(CurrentItem); 
CurrentItem = 2; 
MyContext.MyTables.Delete(CurrentItem); 

по некоторым причинам, прежде чем нажать кнопку «Сохранить», я хочу, чтобы отклонить первый удаленный элемент (1), но по-прежнему хочу удалить вторую (2) .it означает, что я не могу использовать:

MyContext.RejectChanges() 

Потому что он будет отвергать все изменения (в том числе удаленного элемента, который, что я хочу, чтобы удалить его), так что я, хотя, используя IRevertibleChangeTracking может решить мой вопрос .Something так:

((IRevertibleChangeTracking) MyItem).RejectChanges(); 

Но перед использованием этого интерфейса, Мне нужно получить доступ к удаленному элементу. Во-первых, он пытался получить его через MyContext.MyTables, но он не содержит удаленные записи, так что я пытался получить его EntityChangeSet:

EntityChangeSet Changes = MyContext.EntityContainer.GetChanges(); 
MyTable DeletedItem = Changes.First<MyTables>(e => e.ID = 1) ; 

А потом я IRevertibleChangeTracking:

((IRevertibleChangeTracking) DeletedItem ).RejectChanges(); 

Но после Running, эта строка кода не изменила состояние записи, и она была сохранена как «Deleted», поэтому нажав кнопку «Сохранить», она была удалена из базы данных физически !!!! Кажется, IRevertibleChangeTracking не работает для удаленных/добавленных элементов (он просто работает для модифицированных элементов).

Итак, есть ли способ отклонить определенный удаленный элемент из DomainContext.

Спасибо,

+0

Добро пожаловать в SO, пожалуйста, уделите несколько минут, чтобы прочитать FAQ и документацию Markdown (полезный synposis, который доступен в правом поле при редактировании вопроса). – AnthonyWJones

ответ

0

После немного больше охоты, я нашел где Colin Blair says:

Каждый RIA Services объект реализует интерфейс IRevertibleChangeTracking. Все, что вам нужно сделать, это передать вашу сущность IRevertibleChangeTracking и вызвать RejectChanges. RejectChanges не работает для новых или удаленных объектов.

Вместо удаления каждой сущности, вы можете установить логическое свойство ложно, и когда закончите, удалите объекты с установленным флагом в false?