RIAServices: Редактирование объектов на стороне клиента без намерения сохранения - PullRequest
0 голосов
/ 05 мая 2011

Мне часто приходится редактировать сущность на стороне клиента в RIAServices для простых целей пользовательского интерфейса, абсолютно не намереваясь сохранять изменения обратно в базу данных.Однако, если я не включаю редактирование этого объекта в моей доменной службе, RIAServices выдает ошибку и выдает ошибку, как только я пытаюсь изменить поле в одном из моих объектов, говоря, что редактирование не было включено для этого объекта.

Но проблема в том, что я не хочу разрешать фактическое редактирование сущности в базе данных, я просто хочу возиться с этим на клиенте.Мне еще предстоит найти достойный способ решения моей проблемы, и, похоже, единственный вариант - либо продолжить работу и включить фактическое редактирование, и просто никогда не вызывать SubmitChanges () (что является очень пугающей идеей), либо выполнять foreachцикл, когда я загружаю сущности и создаю новый экземпляр каждой сущности и копирую все его свойства (в основном, клонирую мои загруженные сущности, так что я не использую загруженные RIAServices), но это вряд ли практично.

Что я ищу (если оно существует), так это чтобы, после загрузки их, каким-то образом «отсоединить» мой список сущностей на стороне клиента, чтобы RIAServices прекратил их мониторинг и я мог редактировать их по своему усмотрению (яЯ потеряю способность сохранять их обратно, но это нормально, так как я не нуждаюсь или не хочу в любом случае).Есть идеи?Это сводит меня с ума.

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Вы можете легко отсоединить весь список сущностей от DomainContext, позвонив по номеру

DomainContext.MyEntities.Clear();

Перед тем, как сделать это, просто скопируйте сущности в другой список, чтобы вы могли получить к ним доступ позже.(Я предлагаю оставить их в ViewModel.)

Короче, просто сделайте это:

  1. Загрузите объекты через службы RIA.
  2. Скопируйте загруженные объекты вList<MyEntity> в вашей ViewModel.
  3. Позвоните DomainContext.MyEntities.Clear();
  4. Измените ваши сущности так, как вам нравится;они не будут отправлены обратно на сервер SubmitChanges(), поскольку они больше не хранятся в DomainContext.
0 голосов
/ 05 мая 2011

SubmitChanges просто вызовет необходимые методы вставки, обновления, удаления в вашей доменной службе, поэтому все, что вам нужно сделать, это просто вызвать метод throw new NotImplementedException(); или просто удалить методы в целом. Для SubmitChanges не существует секретного метода, который вызывается.

...