RIA Services возвращает список объектов, которые не позволят мне добавлять новые элементы. Вот то, что я считаю, что соответствующие детали:Как получить CanAddNew, чтобы быть правдой для коллекции, возвращенной службами RIA
- Я использую выпущенные версии Silverlight 4 и RIA Services 1.0 с середины апреля 2010 года
- У меня есть DomainService с методом запроса, возвращается
List<ParentObject>
. - ParentObject включает свойство «Дети», которое определено как
List<ChildObject>
. - В DomainService Я определил методы CRUD для ParentObject с соответствующими атрибутами для функций Query, Delete, Insert и Update.
- Класс ParentObject имеет свойство Id, помеченное атрибутом [Key]. Он также имеет свойство «Дети», отмеченное атрибутами [Include], [Composition] и [Association («Parent_Child», «Id», «ParentId»)].
- Класс ChildObject имеет идентификатор, помеченный атрибутом [Key], а также внешний ключ «ParentId», который содержит идентификатор родителя.
На стороне клиента, данные успешно вернулся и я назначу результаты запроса к PagedCollectionView, как это:
_pagedCollectionView = new PagedCollectionView(loadOperation.Entities);
Когда я пытаюсь добавить новый ParentObject к PagedCollectionView, как это:
ParentObject newParentObject = (ParentObject)_pagedCollectionView.AddNew();
Я получаю следующее сообщение об ошибке:
«„Добавить новый“не допускается для этой точки зрения»
В ходе дальнейшего расследования я обнаружил, что _pagedCollectionView.CanAddNew является «ложным» и не может быть изменен, поскольку свойство доступно только для чтения.
Мне нужно иметь возможность добавлять и редактировать ParentObjects (со связанными детьми, конечно) с PagedCollectionView. Что мне нужно сделать?
Спасибо за обходной путь, Даллас. На данный момент я все еще надеюсь найти способ заставить его работать «правильно», но если все остальное не удастся, хорошо иметь план резервного копирования. (Если я вырезал RIA Services из состава и просто высмеял данные на стороне клиента, бросьте его в ObservableCollection и оберните, что с PCV, я могу добавлять элементы без проблем.) Должен быть способ получить PCV, чтобы добавить новые элементы. – MylesRip
Я смотрю на это немного больше, и я считаю, что причина заключается не в том, что PCV не разрешает новые элементы, а в том, что сборка, возвращаемая из операции Context Load(), является ReadOnly. Звучит так, что это проблема для многих людей. Некоторые из них предложили и попытались опубликовать «EntityCollectionView», который будет поддерживать операции, которые мы пытаемся использовать, но это не похоже на то, что этот класс существует где угодно в окончательной форме. из персонажей помещает ссылки на другое сообщение –
Следующая ссылка содержит некоторую полезную информацию (прочитайте две страницы в этом блоге после ссылки на дополнительную страницу): http: //www.riaservicesblog.com/Блог/сообщение/View-Model-Collection-Properties-for-WCF-RIA-Services.aspx http://forums.silverlight.net/forums/p/168676/380096.aspx Цитирование из приведенного выше link: «Самый безопасный способ сделать добавление или удаление - сделать их непосредственно в EntitySet». –