C# OData客户端是否只按顺序返回最后一个条目?
我希望我只是错误地使用了API,但由于某种原因,当我从wp7查询oData服务时,我只收到序列中的最后一个条目。我非常确定该服务工作正常,因为我可以在浏览器中访问oData查询URL并获得正确的结果。但是,以下方法最终只显示列表中的一项 我根据本博客文章中的示例编写了以下代码: 传入的可观察集合是绑定到wpf列表框的集合C# OData客户端是否只按顺序返回最后一个条目?,c#,windows-phone-7,odata,wcf-data-services,C#,Windows Phone 7,Odata,Wcf Data Services,我希望我只是错误地使用了API,但由于某种原因,当我从wp7查询oData服务时,我只收到序列中的最后一个条目。我非常确定该服务工作正常,因为我可以在浏览器中访问oData查询URL并获得正确的结果。但是,以下方法最终只显示列表中的一项 我根据本博客文章中的示例编写了以下代码: 传入的可观察集合是绑定到wpf列表框的集合 private static void LoadRuntimeData(ObservableCollection<CategoryItem> items) {
private static void LoadRuntimeData(ObservableCollection<CategoryItem> items)
{
var catalog = GetCatalog();
var queryUri = new Uri("/Categories?&$orderby=Name", UriKind.Relative);
var categories = new DataServiceCollection<Category>(catalog);
var queryHandle = App.ViewModel.StartQuerying();
categories.LoadAsync(queryUri);
categories.LoadCompleted += (e, c) =>
{
using (queryHandle)
{
var serverItems = categories.Select(k => new CategoryItem
{
Name = k.Name,
Description = k.Description
});
items.Clear();
foreach (var item in serverItems)
{
items.Add(item);
}
}
};
}
private static void LoadRuntimeData(可观察的收集项)
{
var catalog=GetCatalog();
var queryUri=newURI(“/Categories?&$orderby=Name”,UriKind.Relative);
var categories=新的DataServiceCollection(目录);
var queryHandle=App.ViewModel.StartQuerying();
categories.LoadAsync(queryUri);
categories.LoadCompleted+=(e、c)=>
{
使用(查询句柄)
{
var serverItems=categories.Select(k=>newcategoritem
{
Name=k.Name,
描述=k.描述
});
items.Clear();
foreach(serverItems中的变量项)
{
项目。添加(项目);
}
}
};
}
任何提示都将不胜感激
编辑:根据下面的评论,我已经上传了这个问题的源代码:快速尝试一下(我想Chris会更清楚) 但是您不需要以某种方式标识/标记主键列(定义唯一性的一个或多个属性)的属性吗 我知道我在RIA服务中遇到了类似的情况,问题是我没有为unique identifier列设置值。结果,我看到我的所有数据都下降了,但当客户机获得数据时,它将所有数据视为一条记录
杰伊快速尝试一下(我怀疑克里斯会更清楚) 但是您不需要以某种方式标识/标记主键列(定义唯一性的一个或多个属性)的属性吗 我知道我在RIA服务中遇到了类似的情况,问题是我没有为unique identifier列设置值。结果,我看到我的所有数据都下降了,但当客户机获得数据时,它将所有数据视为一条记录
Jay我将对此进行研究,但是如果在注册LoadCompleted事件处理程序后移动LoadAsync方法,会发生什么情况?这有什么不同吗?好吧,我试过各种各样的方法,但似乎无法复制。我从OData.org修改了您的示例以运行Northwind OData服务,无论我将事件处理程序放在何处,一切都很好。你能把代码贴到我们可以下载的地方看看吗?嗨,克里斯,谢谢你的关注。该项目是一个开源项目,所以我刚刚签入codeplex的最新版本并发布了它:您可以获取最新的源代码,然后运行phone项目,它将在odata服务启动时查询odata服务。。。一旦它这样做了,你就可以看到它的行为。提前谢谢!我将对此进行研究,但如果在注册LoadCompleted事件处理程序后移动LoadAsync方法,会发生什么情况?这有什么不同吗?好吧,我试过各种各样的方法,但似乎无法复制。我从OData.org修改了您的示例以运行Northwind OData服务,无论我将事件处理程序放在何处,一切都很好。你能把代码贴到我们可以下载的地方看看吗?嗨,克里斯,谢谢你的关注。该项目是一个开源项目,所以我刚刚签入codeplex的最新版本并发布了它:您可以获取最新的源代码,然后运行phone项目,它将在odata服务启动时查询odata服务。。。一旦它这样做了,你就可以看到它的行为。提前谢谢!