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

时间:2010-11-02 12:30:23

标签: c# windows-phone-7 odata wcf-data-services

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

我根据此博客文章中的示例进行了以下代码:http://chriskoenig.net/2010/10/30/odata-v2-and-windows-phone-7/

传入的可观察集合是绑定到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);
                }
            }
        };
}

任何提示都将不胜感激。

编辑:根据以下评论,我上传了此问题可重现的源代码:http://khanviewer.codeplex.com/

1 个答案:

答案 0 :(得分:0)

快速捅一下(我怀疑克里斯会更清楚)。

但是,您不需要以某种方式使用属性识别/标记主键列(定义唯一性的属性)。

我知道我在RIA Services中遇到了与此类似的问题,问题是我没有为唯一标识符列设置值。结果我看到我的所有数据都已关闭,但是当客户端获得数据时,它将所有数据视为单个记录。