6

我的 Azure 移动服务中有一个名为 NameTable 的表。当我在我的客户端应用程序(使用移动服务 SDK 的 WP8 应用程序)中进行以下提到的调用时:

var myTable = GetZumoService().GetTable<NameTable>();
var myList = await myTable.Where(nameInfo => nameInfo.IsTaken == false).ToListAsync();

myList 始终只包含 50 个项目,尽管我知道表中有超过 400 行与查询条件匹配。

我究竟做错了什么?

4

3 回答 3

16

默认情况下,该服务只会在每个读取操作中返回一定数量的行(如您所见,为 50)。由于 Azure 服务在免费时(以及付费服务的成本)有返回字节数的配额,因此移动服务具有此默认值。

您可以使用操作请求更多行Take。但是,您可以在任何给定时间询问的行数是有限制的(即 1000)。这个想法是您不应该要求表中的所有数据 - 它可能很多 - 并且在需要时使用SkipandTake操作来要求行。

var myTable = GetZumoService().GetTable<NameTable>();
var myList = await myTable.Take(500)
                          .Where(nameInfo => nameInfo.IsTaken == false)
                          .ToListAsync();
于 2012-12-30T16:35:00.213 回答
8

我发现这还不够。您需要使用以下[EnableQuery]属性装饰您的 Azure 移动服务控制器方法:

[EnableQuery(PageSize=1000)]
public IQueryable<MyDataTable> GetOneThousandRecords()
{
    return Query()
}
于 2015-01-23T19:22:20.173 回答
0

由于服务器端的行为,我不得不在简单的表格中更改我的脚本,如下所示:MSDN 论坛

使用应用服务编辑器,编辑 tableName.js 文件(在表目录中,将 tableName 替换为您的表名),然后设置:table.maxTop = 1000 您还可以设置 table.pageSize = 1000 以设置默认页面大小。

设置 table.pageSize = 1000; 为我工作。

于 2018-05-17T09:09:33.920 回答