Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OData客户端是否只按顺序返回最后一个条目?_C#_Windows Phone 7_Odata_Wcf Data Services - Fatal编程技术网

C# OData客户端是否只按顺序返回最后一个条目?

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) {

我希望我只是错误地使用了API,但由于某种原因,当我从wp7查询oData服务时,我只收到序列中的最后一个条目。我非常确定该服务工作正常,因为我可以在浏览器中访问oData查询URL并获得正确的结果。但是,以下方法最终只显示列表中的一项

我根据本博客文章中的示例编写了以下代码:

传入的可观察集合是绑定到wpf列表框的集合

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服务。。。一旦它这样做了,你就可以看到它的行为。提前谢谢!