WCF RIA Services v1 sp1, Состав, проверка дочерних объектов - PullRequest
2 голосов
/ 30 июня 2011

Я использую атрибут композиции. Недавно я зашел в следующий блог:

http://brettsam.com/2011/03/25/ria-services-composition-with-entity-framework/

Итак, я использовал подход, описанный в сообщении блога выше, чтобы исправить состояние сущностей моих дочерних сущностей, например:

foreach (Child c in this.ChangeSet
                         .GetAssociatedChanges(currentParent, p => p.Children)) 
{  
  ChangeOperation change = this.ChangeSet.GetChangeOperation(c);
  switch (change) 
  {  
    case ChangeOperation.Delete: 
      ...
    case ChangeOperation.Insert: 
      // This is already done for us.
      break; 
    case ChangeOperation.None: 
      ...
    case ChangeOperation.Update: 
      this.ObjectContext.Children
                           .AttachAsModified(c, this.ChangeSet.GetOriginal(c)); 
      break; 
    default: 
      break; 
  } 
}

Я также удалил метод UpdateChild (Child currentChild), который был создан по умолчанию. Теперь код работает, и дочерние объекты сохраняются в базе данных, как и ожидалось. Тем не мение, Я заметил одну проблему. Некоторые свойства моего дочернего объекта имели собственный атрибут проверки (унаследовано от класса ValidationAttribute). Они не были вызваны вообще. Это обычай Атрибут проверки не генерируется на стороне клиента Silverlight, поскольку он использует некоторые классы, которые доступны только в .NET. но не в серебряном свете. Итак, на проверка клиента проходит, и серверная сторона также не проверяет. Однако если Я добавляю метод UpdateChild обратно в DomainService, запускается код атрибута проверки. Что здесь не так? Может кто-нибудь объяснить это?

1 Ответ

0 голосов
/ 02 февраля 2012

Вам следует взглянуть на EntityGraph

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

...