Альтернатива возврату DataTable из службы данных WCF

У меня есть приложение для создания отчетов, которое взаимодействует с пользовательской системой и возвращает данные для использования в отчетах. Поскольку я не контролирую данные и не знаю структуры данных, я использую C # DataTables для хранения данных.

Не возникло требования предоставлять данные, возвращаемые моим приложением через PowerPivot через веб-службу, теперь я понимаю, что для этого мне нужно использовать службу данных WCF.

Моя проблема в том, что я не хочу возвращать объект DataTable, я бы предпочел преобразовать его во что-то более управляемое и вернуть его.

Может ли кто-нибудь предложить альтернативы для этого?


person keitn    schedule 27.06.2012    source источник


Ответы (2)


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

person Rajesh Subramanian    schedule 27.06.2012
comment
Я понимаю вашу точку зрения, но я не думаю, что это сработает, поскольку конечным пунктом назначения для этих данных является MS Power Pivot, у него не будет механизма для десериализации XML. - person keitn; 27.06.2012

Взгляните на DataTableSurrogate, он используется в SyncFramework для сериализации таблиц данных.

суррогат таблицы данных MSDN

person flayn    schedule 27.06.2012
comment
Я пытался использовать DataTableSurrogate, однако, когда я пытаюсь вернуть его из своего WS, я получаю сообщение об ошибке, которое не может быть сериализовано, потому что у него нет конструктора без параметров, похоже, что DataTableSurrogate имеет только один конструктор, для которого требуется DataTable. - person keitn; 27.06.2012
comment
Да, он принимает Datatable в конструкторе. Я считаю удобным использовать Datatable, и похоже, что это может быть полезно для вас, потому что вы мало что знаете о природе ваших данных, а DataTable уже довольно общий. В противном случае вам придется реализовать что-то очень общее самостоятельно. - person flayn; 27.06.2012
comment
Но моя проблема в том, что мне нужно вернуть эти данные через веб-службу для использования Microsoft Power Pivot, поэтому похоже, что использование DataTableSurrogate не является решением. - person keitn; 27.06.2012
comment
Извините, я не знаю Pivot и то, как он потребляет данные. - person flayn; 27.06.2012