我希望我只是错误地使用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/
答案 0 :(得分:0)
快速捅一下(我怀疑克里斯会更清楚)。
但是,您不需要以某种方式使用属性识别/标记主键列(定义唯一性的属性)。
我知道我在RIA Services中遇到了与此类似的问题,问题是我没有为唯一标识符列设置值。结果我看到我的所有数据都已关闭,但是当客户端获得数据时,它将所有数据视为单个记录。
杰