2017-03-14 4 views
1

Ich entwickle eine App (Android), die Azure Mobile Apps mit Offline-Synchronisierung verwendet, und ich versuche, Informationen zum Erstellen von Abfragen an MobileServiceSyncTable (d. H. Abfragen an lokale SQLite-Datenbank) zu erhalten. Es wäre schön, SQL-Abfragen und Azure ORM zu sehen, zum Beispiel:Gibt es eine Möglichkeit, Count Query in Azure MobileServiceSyncTable auszuführen?

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 - ??? 

und so weiter. Ich habe Tutorials und Dokumente überprüft, aber Tutorials zeigen nur einfache Anwendungsfälle. Im Fall der Verwendung von MobileServiceTable (keine Offline-Synchronisierung) ist die Syntax wie LINQ. Bei Verwendung von MobileServiceSyncTable ist die Syntax jedoch nicht offensichtlich. Hat jemand mobile Apps mit MS Azure Mobile-Back-End mit Offline-Synchronisierung erstellt?

+0

Dokumentation https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-android-get-started-offline-data – chirag90

+0

Ja, ich habe dieses Tutorial überprüft . Aber es gibt nur sehr einfache Anwendungsfälle. Und zum Beispiel, wie Abfrage mit COUNT zu erstellen? – zampotex

Antwort

0

prüft ich den Quellcode & javadocs von Azure Mobile-Apps-SDK für Android-Client, dann MobileServiceSyncTable, entdeckte ich dort keine Methode in den Klassen ist QueryOperations & Query für direkt einige Features wie Count Reihen unterstützen, Bestellung, usw.

Wenn Sie die Zählnummer beim Abrufen von Daten abrufen möchten, können Sie die Methode includeInlineCount() der Klasse Query verwenden, um die Eigenschaft inlinecount zum Ergebnis hinzuzufügen.

Ansonsten scheint es zum Zählen von Zeilen oder andere Abfragen eine Abhilfe Weg zu sein, die von den source code der Unit-Tests für Android-Client kommt, dass direkt SQL-Abfrage für SQLite auf Android bauen, um die Daten zu erhalten, wie Sie wollen, weil die Offline-Synchronisierungsfunktion zum Synchronisieren zwischen SQlite und Azure Mobile Apps dient.

Ich hoffe, es hilft.


Nach meiner Erfahrung, die Problemumgehung unten, um Zeilen zu zählen.

  1. Verwenden von benutzerdefinierten API mit Back-End-Logik zum Zählen.
  2. Verwendung von includeInlineCount Methode mit Paging für eine große Tabelle.
+0

Ich habe Quellcode überprüft, und ich habe die Methode 'includeInlineCount()' gesehen. Und ich habe über diesen Weg nachgedacht. Aber, ich denke, wenn ich versuche, die Anzahl der Zeilen in der großen Tabelle zu erhalten, wird Framework in diesem Fall alle Daten aus der Datenbank ziehen? – zampotex

+0

@zampotex In der Tat, für Ihren Gedanken. Die Verwendung von 'includeInlineCount()' scheint also keine gute Idee für das Zählen in einer großen Tabelle zu sein. –

0

Ich habe die Art und Weise zu erstellen geordnete Anfragen gefunden: Bei Abfrage mit WHERE-Klausel:

SELECT * FROM <TableName> WHERE <field1>=<value> ORDER BY <field2> DESC : 
QueryOperations.field("field1").eq(val("value")).orderBy("<field2>", QueryOrder.Descending); 

Bei einfacher geordneten Abfrage (alle Zeilen erhalten):

SELECT * FROM <TableName> ORDER BY <fieldName> DESC : 
QueryOperations.field("id").ne(val("")).orderBy("<fieldName>", QueryOrder.Descending); 

Es ist schmutzig, aber es funktioniert. Erstellen von Abfragen wird in this tutorial beschrieben. Obwohl es sich um MobileServiceTable handelt (keine Offline-Synchronisierung), ist die Syntax ähnlich.

Aber die Frage nach dem COUNT bleibt offen.

Verwandte Themen