Обновите одно поле из одного объекта с помощью сервисов ria - PullRequest
0 голосов
/ 02 апреля 2010

Бывают ситуации, когда я хочу обновить только определенное поле одного объекта в базе данных.

Я загрузил объекты этого типа в свое приложение Silverlight, и я знаю, что они постоянно меняются на сервере ... но есть одно поле, которое должен быть установлен клиентом Silverlight ... сервер будет только читать его. Как я могу просто отправить новые данные для этого поля на сервер?

Пример сущности с именем "TextField". У меня есть список TextFields, загруженных в приложение Silverlight и время от времени пользователь будет обновлять свойство Preload (string) сущность, которая должна вернуться на сервер, не изменяя ничего на сервере.

Я попытался добавить простой метод SetPreloadText (...) в DomainService, но это просто вызывает сбой Silverlight с каким-то странным кодом ошибки.

Есть ли способ для этого? Я работаю против идеи Silverlight здесь? Я действительно не хочу отправлять весь объект обратно, потому что знаю, что в любой момент времени версия на клиенте, скорее всего, будет устаревшей. (что подходит для этого конкретного приложения)

Ответы [ 2 ]

0 голосов
/ 28 октября 2010

Теперь вам нужно использовать это:

  this._yourENtitySet.Value.ApplyCurrentValues(modified); // The one you received
  this._yourENtitySet.Value.ApplyOriginalValues(original); /// The original one

Надеюсь, это поможет!

0 голосов
/ 03 апреля 2010

Я думаю, что SetPreloadText (..) сбоит, потому что RIA Services использует специальные соглашения об именах, такие как вставка / обновление / удаление для crud, если вы не укажете, что оно будет иметь другое имя.

Если вы хотите обновить только одно свойство, потому что другое не изменилось. Вы должны посмотреть на

this.Context.AttachAsModified(currentEntityWithAllTextFields, this.ChangeSet.GetOriginal(currentEntityWithAllTextFields));

в вашем методе обновления. С этим вы можете точно отфильтровать то, что изменилось ...

надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...