Как ввести пользовательские примитивные типы ключей в Службы данных WCF (Astoria) - PullRequest
1 голос
/ 07 апреля 2010

Мы используем пользовательский тип для представления идентификаторов в нашем проекте.К нему подключен TypeConvertor, и он всегда помогал с сериализацией.

Я пытался использовать службы данных WCF для предоставления некоторых данных из нашей системы, но столкнулся с проблемой.Платформа Astoria не распознает класс как сущность, хотя я украсил его атрибутом [DataServiceKey ("Id")].Если я изменяю тип свойства на Guid - это полностью работает :(.

Как научить WCF Data Services понимать этот простой класс?

Ответы [ 2 ]

1 голос
/ 07 апреля 2010

После небольшого исследования и тонны работы с Reflector я обнаружил, что это невозможно.

Службы данных WCF имеют монументальную поддержку внешних метаданных, подробно описанную Alex James вочень хорошая серия записей .

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

Эта и ограниченная поддержка LINQ от NHibernate делает Astoria довольно непригодной для меня сейчас.Ведьма очень грустная.

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

Пока класс имеет свойство Id, DataServices должен его правильно сериализовать. Вам даже не нужен атрибут, если свойство называется ID. Вы видели пример, который я сделал здесь . Кроме того, вы найдете полный список статей, связанных с OData, на http://www.Odataprimer.com. Возможно, одна из них поможет.

...