繁体   English   中英

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

[英]Azure Mobile Service query doesn't return all the rows

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

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

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

我究竟做错了什么?

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

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

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

我发现这还不够。 您需要使用[EnableQuery]属性修饰Azure Mobile Service控制器方法,如下所示:

[EnableQuery(PageSize=1000)]
public IQueryable<MyDataTable> GetOneThousandRecords()
{
    return Query()
}

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

使用App Service Editor,编辑tableName.js文件(在tables目录中,用表名替换tableName),然后设置:table.maxTop = 1000您还可以设置table.pageSize = 1000来设置默认页面大小。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM