Dapper gibt mehrere Ergebnisse mit einer Abfrage zurück

Ich möchte zwei Ergebnisse mit einer Abfrage zurückgeben. Zum Beispiel die abgefragte Tabelle und außerdem möchte ich die Größe der ganzen Tabelle zurückgeben.

Ich kann es nicht in c # tun, weil ich nur zum Beispiel die ersten 100 Ergebnisse abfragen möchte, aber es sollte für den Kunden möglich sein, die nächsten 100 Ergebnisse abzufragen. Aber vorher möchte ich dem Kunden zeigen, ob es weitere Ergebnisse gibt.

Zum Beispiel habe ich einen Tisch mit 150 Ergebnissen. Beim ersten Aufruf bekomme ich nur die ersten 100 Ergebnisse. Aber ich möchte auch die Informationen bekommen, dass es noch 50 Ergebnisse gibt, ohne eine zweite Abfrage aufzurufen. Ist das mit dapper möglich?

Ist das mit dapper möglich?

Dapper ist nur ein object-relationaler Mapper, dh Karten von einem objektorientierten Domänenmodell zu einer relationalen database. Sie müssen noch die database (mit einer Abfrage) fragen, wie viele datasätze es insgesamt gibt. Dapper wird das nicht auszudrücken.

Sie müssen also die Abfrage ändern, die Sie an die database senden (mit Dapper), um nicht nur die ersten 100 Zeilen aus einer Tabelle auszuwählen, sondern auch eine zusätzliche Spalte, die eine Zahl enthält, die die Gesamtzahl der datasätze in der Tabelle angibt. Nur die database kennt diese Nummer, also musst du es darum bitten.

Sie können versuchen, QueryMultiple:

using (var conn = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=true; Initial Catalog=foo")) { using (var data = conn.QueryMultiple("select count(*) as TotalCount from data; select top 2 * from data", null)) { var totalRecords = data.Read<int>().Single(); var records = data.Read<dynamic>(); var remaining = totalRecords - records.Count(); } } 

Wenn Sie wirklich nur wissen wollen, ob es mehr Ergebnisse gibt und nicht, wie viele, könnten Sie Ihre Ergebnisse auf 101 zu begrenzen. Dann casting Sie die 101. Zeile, die nur ein Indikator ist, dass es mehr als 100 Zeilen gibt.

Sie können auch die ganze Tabelle abfragen, aber nur die ersten 100 Zeilen anzeigen, und Sie wissen bereits, ob es mehr data gibt, die angezeigt werden sollen, wenn der Benutzer nach dem nächsten datasatz fragt