我的Azure移动服务中有一个名为NameTable的表。当我在我的客户端应用程序(使用Mobile Services SDK的WP8应用程序)中进行下面提到的调用时:
var myTable = GetZumoService().GetTable<NameTable>();
var myList = await myTable.Where(nameInfo => nameInfo.IsTaken == false).ToListAsync();
myList始终只包含50个项目,但我知道表格中有超过400行符合查询条件。
我做错了什么?
答案 0 :(得分:16)
默认情况下,服务只会在每次读取操作中返回一定数量的行(50,如您所见)。由于Azure服务中的返回字节数是免费的(以及付费成本的成本),因此移动服务具有此默认值。
您可以使用Take
操作要求更多行。但是,在任何给定时间(1000),您可以询问的行数有限制。我们的想法是,您不应该要求表中的所有数据 - 它可能很多 - 并使用Skip
和Take
操作在您需要时请求行。
var myTable = GetZumoService().GetTable<NameTable>();
var myList = await myTable.Take(500)
.Where(nameInfo => nameInfo.IsTaken == false)
.ToListAsync();
答案 1 :(得分:8)
我发现这还不够。您需要使用[EnableQuery]
属性修饰Azure Mobile Service控制器方法,如下所示:
[EnableQuery(PageSize=1000)]
public IQueryable<MyDataTable> GetOneThousandRecords()
{
return Query()
}
答案 2 :(得分:0)
由于服务器端的行为,我不得不在简单的表格中更改我的脚本,如下所示:MSDN Forum
使用App Service Editor,编辑tableName.js文件(在tables目录中,用表名替换tableName),然后设置:table.maxTop = 1000 您还可以设置table.pageSize = 1000来设置默认页面大小。
设置table.pageSize = 1000;为我工作。