我正在开发一个使用具有离线同步的Azure移动应用程序的应用程序(Android),并且我正在尝试获取有关如何创建查询的任何信息,以使MobileserVicessynctable(即查询到本地查询)SQLITE数据库)。很高兴看到SQL查询和Azure orm等效,例如:
SELECT ... FROM ... WHERE id = "1" : Query query = QueryOperations.field("id").eq(val("1"));
SELECT ... FROM ... WHERE id <> "1" : Query query = QueryOperations.field("id").ne(val("1"));
SELECT COUNT("id") FROM ... - ???
SELECT ... FROM ... ORDER BY ... DESC - ???
等等。我已经检查了教程和文档,但是教程仅显示简单的用途。如果使用MobileserViceTable(无线同步),语法就像Linq一样。但是,如果使用MobileServicessynctable,语法并不明显。是否有人使用MS Azure Mobile Backend创建了移动应用程序?
我查看了源代码&amp;Anzure移动应用程序SDK的Javadocs for Android客户端,然后我发现类MobileServiceSyncTable
中没有任何方法,QueryOperations
&amp;Query
直接支持某些功能,例如计数行,订购等。
如果要在检索数据时要获取计数号,则可以使用类Query
的方法includeInlineCount()
将InlineCount属性添加到结果中。
否则,似乎有一种解决行或其他查询的方法,它来自Android Client的单元测试源代码,它直接在Android上为SQLITE构建SQL查询以获取您想要的数据,以获取数据因为离线同步功能用于在SQLite和Azure移动应用程序之间同步。
希望它有帮助。
根据我的经验,以下方法计算行的方法。
- 使用带有后端逻辑的自定义API进行计数。
- 使用
includeInlineCount
方法与大尺寸表的分页。
我找到了创建有序查询的方法:如果查询与Where子句:
SELECT * FROM <TableName> WHERE <field1>=<value> ORDER BY <field2> DESC :
QueryOperations.field("field1").eq(val("value")).orderBy("<field2>", QueryOrder.Descending);
如果有简单有序查询(获取所有行):
SELECT * FROM <TableName> ORDER BY <fieldName> DESC :
QueryOperations.field("id").ne(val("")).orderBy("<fieldName>", QueryOrder.Descending);
这很脏,但是有效。本教程中描述了建筑查询。虽然这是关于MobileServicable(无线同步),但语法是相似的。
但是关于计数的问题仍然开放。