Модель презентации RIA Services с 1-м или многими отношениями

StackOverflow https://stackoverflow.com/questions/2152623

Вопрос

Я пытаюсь получить модель презентации (обсуждается здесь а также здесь) Работа в Риа. Все примеры, которые я могу найти,-это простые, плоские данные, не имеющие 1-ry-many или много-много отношений, которые я не могу работать-в частности, на обновлениях и вставках в ассоциативные отношения.

Запросы я могу хорошо работать - у меня есть классы презентаций, помеченные атрибутами ассоциации (и включают атрибуты, где это необходимо), и я хорошо понимаю, как данные загружаются в сторону клиента и поддерживаются там как сущности. У меня также есть вставки новых объектов. Тем не менее, я испытываю следующие проблемы. Для следующих примеров предположим, что у нас есть простые альбомы и артистки, где у альбома есть один артист, а артист может иметь ноль для многих альбомов. Оба имеют свойство имени.

  • На стороне клиента, если я сделаю myartist.albums.add (analbum) или myartist.albums.remove (analbum), ничего не происходит. Haschanges возвращает ложь. (Обратите внимание, что Myartist и Analbum были получены исключительно в коде, загружая сущности и итерации, чтобы получить ссылки на конкретные объекты: я еще ничего не делаю в пользовательском интерфейсе или с DomainDataSources, просто помирившись).
  • Если я обновлю имя на артиста и субчичке, когда метод обновления вызывает на сервере, коллекция альбомов NULL.

У кого -нибудь есть какие -либо предложения, или вы можете указать мне на пример, который использует более сложные объекты?

РЕДАКТИРОВАТЬ (Сохранение вышеперечисленного для потомков): Хорошо, кажется, что вторая проблема (ссылка на объект или набор сущностей, демонстрируемых как нулевые, когда обновление вызывает на сервере), потому что у ребенка вступают в силу не помечены как измененные и Таким образом, они не сериализованы и отправляются обратно. Я знаю, что вы можете заставить это произойти, используя [композицию], и я заставил его работать таким образом, но это не композиционные отношения, и я хочу, чтобы обе сущности были «высшими» сущностями. Как я могу отметить сущность как изменившаяся?

Это было полезно?

Решение

Проблема заключалась в том, что мои атрибуты [ассоциации] не были правильно определены. Я не понимал, что свойство имени ассоциации должно быть одинаковым с обеих сторон ассоциации. Когда имена одинаковы, и вы делаете сборку, сгенерированный код на клиенте использует другой конструктор для EntityCollection, используемого «родителем» для обозначения «детей», чем, если ассоциации не настроены правильно Анкет Новый конструктор требует обратных вызовов, которые делают немного дополнительной обработки при вызове добавления и удаления в коллекцию - в частности, они принимают дочернюю сущность, которую вы добавляете или снимаете и изменяют свойство, которое относится к его родителю, так что все осталось В синхронизации: коллекция, из которой вы удалили объект, коллекция, в которую вы его добавили, и ссылка объекта на его родителя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top