返回复杂类型的WCF数据服务不是ATOM格式

时间:2012-02-25 21:43:06

标签: entity-framework windows-phone-7 wcf-data-services

我已经在这个问题上苦苦挣扎了好几天,并且认为我已经将问题分解为序列化问题了。

我有一个WCF数据服务,我正在调用一个存储过程来提取数据集(n行数)。数据服务正在使用“函数导入”,它返回“复杂类型”。该服务工作正常,它在浏览器中返回以下内容:

< GetChanges xmlns =“http://schemas.microsoft.com/ado/2007/08/dataservices”>
< element xmlns:p2 =“http://schemas.microsoft.com/ado/2007/08/dataservices/metadata”p2:type =“tasksModel.fxGetChangeList_Result”>

<改变> DELETE< / CHANGE>

< ID p2:type =“Edm.Int32”> 116< / ID>

< UpdateVersion p2:type =“Edm.Int64”> 703< / UpdateVersion>

< /组件>

< / GetChanges>

但是当我从客户端(Windows手机应用程序)调用此数据时,不会返回任何结果。我已经确认网址直接下拉了上面的数据。

这是客户的电话......

_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 :(得分:0)

1)这是客户端库的已知限制。

2)目前客户端库不支持。通常的解决方法是从服务器返回实体类型,或自己解析响应(通常使用XLinq)

3)复杂类型没有ATOM格式。要获取ATOM,服务器需要返回实体类型。