Службы данных WCF, возвращающие сложный тип, не в формате ATOM - PullRequest
1 голос
/ 26 февраля 2012

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

У меня есть служба данных WCF, и я вызываю хранимую процедуру, которая извлекает наборы данных (n рядов). Служба данных использует функцию импорта и возвращает сложный тип. Сервис работает нормально, возвращает в браузере следующее:


DELETE

116

703

Но когда я вызываю эти данные из клиента (приложение для Windows Phone), результаты не возвращаются. Я подтвердил, что URL напрямую выводит данные выше.

Вот звонок клиента ...

_changes.LoadCompleted += new EventHandler<System.Data.Services.Client.LoadCompletedEventArgs>(Items_LoadCompleted);

_changes.LoadAsync(new Uri(theUrl, UriKind.Absolute));

А вот и обратный звонок

void Items_LoadCompleted(object sender, System.Data.Services.Client.LoadCompletedEventArgs e)
    {
        int count = _changes.Count;
        _changes.ToList().ForEach( x=>{
        ....
   });

Ошибки не выдаются, просто результатов не возвращается.

Я понял, что приведенный выше xml-файл из службы данных НЕ в формате атома. Единственное, о чем я могу думать, это то, что клиент не может сериализовать данные в сложном типе, потому что они не в формате Atom.

Итак, у меня есть 3 вопроса: 1. Кто-нибудь еще сталкивался с этим? 2. Есть ли способ обхода клиента для сериализации сложного типа? 3. Есть ли работа на стороне сервера для сериализации комплекса в Atom?

1 Ответ

0 голосов
/ 26 февраля 2012

1) Это известное ограничение клиентской библиотеки.

2) В настоящее время клиентская библиотека не поддерживается.Обычный обходной путь - либо вернуть тип объекта с сервера, либо проанализировать ответ самостоятельно (обычно с использованием XLinq)

3). Для сложных типов формат ATOM отсутствует.Чтобы получить ATOM, серверу потребуется вернуть тип сущности.

...