我希望我只是错误地使用了 API,但出于某种原因,当我从 wp7 查询我的 oData 服务时,我只收到序列中的最后一个条目。我很确定该服务工作正常,因为我能够在浏览器中访问 oData 查询 URL 并获得正确的结果。但是,以下方法最终只显示列表中的一项。
我基于这篇博文中示例中的以下代码:http://chriskoenig.net/2010/10/30/odata-v2-and-windows-phone-7/
传入的可观察集合是绑定(bind)到 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/
最佳答案
快速了解一下(我怀疑 Chris 会更清楚)。
但是您不需要以某种方式标识/标记主键列(定义唯一性的一个或多个属性)的属性吗?
我知道我在使用 RIA 服务时遇到过类似的情况,问题是我没有为唯一标识符列设置值。结果,我看到我所有的数据都下来了,但是当客户端获取数据时,它看到所有数据都是一条记录。
周杰伦
关于c# - OData 客户端只按顺序返回最后一个条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077635/