Динамически создаваемый класс как DataContract в WCF - PullRequest
0 голосов
/ 08 июня 2011

Есть ли способ вернуть массив объектов типа DynamicClass из метода WCF?

Я использую Динамическую библиотеку Linq в моей службе WCF, чтобы select столбцы таблицы базы данных согласно запросу клиентов.Код клиента должен выглядеть следующим образом:

//client side code
string whereClause = "FeatureId >= 6 and FeatureId <= 180";
string selectClause = "New(FeatureName as Name, FeatureId as Id)";
client.RequestAsync("Feature", "FeatureDB", whereClause, selectClause);

Feature - это имя таблицы, из которой я хочу select только два столбца, а именно. FeatureName и FeatureId , удовлетворяющих условию в предложении where.

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

Так есть ли решение этой проблемы?

Или какая-нибудь альтернатива?Цель в том, чтобы я не хотел возвращать все столбцы таблицы базы данных, потому что мне не нужны все они на стороне клиента.Поэтому я не вижу смысла отправлять все столбцы обратно клиенту, который все равно откажется от него.

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Рассматривали ли вы внедрение службы данных WCF ?

0 голосов
/ 08 июня 2011

Вы можете обойти эту проблему, используя Reflection для украшения ваших полей соответствующими атрибутами, однако это может по-прежнему представлять проблему для любого клиентского процесса, который использует вашу службу WCF, поскольку сгенерированный раздел вашего контракта на обслуживание будетнедетерминированный, т. е. xs: любой в схеме.

Лучше по возможности стараться набирать свои контракты WCF.

...