WCF Ria Services ChangeSet.GetOriginal (): Как это работает?

У меня есть довольно простой вопрос, на который я не могу найти ответ. У меня есть приложение Silverlight с Ria Services. В классе DomainService у меня есть метод обновления, как показано ниже:

public void UpdateConversationState(ConversationState currentConversationState)
    {
        var original = ChangeSet.GetOriginal(currentConversationState);
        if (original != null)
            ObjectContext.ConversationStatesRepository.AttachAsModified(currentConversationState, original);
        else
            ObjectContext.ConversationStatesRepository.Attach(currentConversationState);
        currentConversationState.UpdDat = DateTime.Now;
        if(original.Name != currentConversationState.Name)
            //Do something extra
    }

Проблема в том, что свойство Name всегда пусто. Фактически, каждое поле, кроме Id, имеет значения по умолчанию. Я попытался найти, как работает метод GetOriginal, но не нашел никакой помощи. Мне кажется, что он пытается перестроить исходный объект на сервере на основе изменений, которые отправляются обратно от клиента к серверу.

Или, может быть, кто-то знает лучший способ проверить, было ли определенное свойство объекта изменилось во время обновления? Конечно, я мог бы сравнить его со значением в базе данных, но мне кажется, что мне следует избегать этого дополнительного обращения к базе данных.

Любая помощь снова приветствуется: -)

РЕДАКТИРОВАТЬ: Мне кажется, что он пытается перестроить исходный объект на сервере на основе изменений, которые отправляются обратно от клиента к серверу.

Или, может быть, кто-то знает лучший способ проверить, было ли определенное свойство объекта изменилось во время обновления? Конечно, я мог бы сравнить его со значением в базе данных, но мне кажется, что мне следует избегать этого дополнительного обращения к базе данных.

Любая помощь снова приветствуется: -)

РЕДАКТИРОВАТЬ: Мне кажется, что он пытается перестроить исходный объект на сервере на основе изменений, которые отправляются обратно от клиента к серверу.

Или, может быть, кто-то знает лучший способ проверить, было ли определенное свойство объекта изменилось во время обновления? Конечно, я мог бы сравнить его со значением в базе данных, но мне кажется, что мне следует избегать этого дополнительного обращения к базе данных.

Любая помощь снова приветствуется: -)

РЕДАКТИРОВАТЬ: Только что узнал об атрибуте RoundTripOriginalAttribute. Кажется, это помогает. Неужели я единственный, кстати, думаю, что RIA может быть задокументировано немного лучше?

6
задан Sander_V 15 October 2010 в 07:13
поделиться