我已经在这个问题上苦苦挣扎了好几天,并且认为我已经将问题分解为序列化问题了。
我有一个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?
答案 0 :(得分:0)
1)这是客户端库的已知限制。
2)目前客户端库不支持。通常的解决方法是从服务器返回实体类型,或自己解析响应(通常使用XLinq)
3)复杂类型没有ATOM格式。要获取ATOM,服务器需要返回实体类型。