Azure移动服务查询不会返回所有行

时间:2012-12-30 05:07:14

标签: c# windows-phone-8 azure-mobile-services

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

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

myList始终只包含50个项目,但我知道表格中有超过400行符合查询条件。

我做错了什么?

3 个答案:

答案 0 :(得分:16)

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

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

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;为我工作。

相关问题