Создание пользовательских объектов для wcf - PullRequest
0 голосов
/ 02 октября 2010

У меня есть существующее веб-приложение, которое использует объекты EF и POCO. Я хочу улучшить взаимодействие с клиентом, выставляя некоторые из моих объектов через WCF (JSON). У меня это работает нормально, но я не уверен, как обрабатывать производные объекты (не уверен, что это правильный термин) или IEnumerable анонимные объекты, если хотите.

Допустим, у меня есть 3 таблицы, структурированные так:

Шаблоны

ID
Template

Группы

ID
Group

Инстансы

ID
TemplateID
GroupID

Это, очевидно, отношения типа один-ко-многим. У меня правильно настроены свойства навигации, и получение строго типизированных свойств объекта прекрасно работает. Тем не менее, как я могу отправить сериализованный объект (ы) анонимного типа по сети. Как и объект, который отправляет все экземпляры, которые равны groupid = 1 и включают в себя имена шаблона и объекта.

Я что-то упустил или мне нужно создать еще один объект класса для WCF, который бы выглядел так:

Объект WCF

InstanceID
TemplateID
TemplateName
GroupID
GroupName

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

Ваши предложения приветствуются. Привет

1 Ответ

1 голос
/ 02 октября 2010

Исходя из того, что вы делаете, я бы посоветовал взглянуть на OData с WCF Data Services. Вы заявляете, что хотите иметь возможность отправлять все экземпляры, где groupid = 1 - OData отлично подходит для такого типа фильтрации.

Если вы хотите придерживаться своего текущего подхода и не использовать OData, тогда мой первый вопрос: почему вы вообще отправляете анонимные типы? Вы можете делать то, что вы ищете (все экземпляры с groupid = 1), не отправляя обратно анонимный тип. В предложении select вы просто создаете новые экземпляры ваших конкретных объектов, а не обновляете анонимные типы. Если ваш запрос на самом деле просто фильтрует и не выполняет какой-либо значимой проекции с помощью selct на анонимный тип, то я не вижу никакой причины вообще возвращать ваш анонимный тип.

...