Unterstützt Dapper eine unbekannte Anzahl von Ergebnismengen?

ado.net c# dapper

Frage

Aktualisieren:

Wie Marc unten bemerkt, ist meine grundlegende Frage: Was passiert, wenn Read () häufiger aufgerufen wird als Datensätze bei Verwendung von QueryMultiple ()?


Ich arbeite daran, einen vorhandenen DB-Aufruf von SqlDataReader zu Dapper zu konvertieren.

Probleme damit haben. Ich rufe einen Sproc an, der bedingt 1-4 weitere Sprocs anrufen kann. So habe ich möglicherweise viele Ergebnissätze. Um meine Erklärung zu vereinfachen, nehmen wir an, dass ich nur 1-2 Ergebnissätze habe. Wenn der erste Sproc nicht aufgerufen wird, aber der zweite Sproc aufgerufen wird, dann frisst mein erster Read () - Aufruf die erste und einzige Ergebnismenge auf. Dann habe ich eine Menge nutzloser TeamItem-Objekte, die ProjectItem-Objekte sein sollten. Dann explodiert es natürlich beim zweiten Aufruf von Read (), weil es keine weitere Ergebnismenge gibt.

Fehle ich etwas an Dapper, oder ist das ein extremer Fall, den Dapper nicht in der Lage sein wird, machbar zu machen?

if (_searchParams.WillSearchTeams)
{
    var teams = multi.Read<TeamItem>().ToList();
}
var projects = multi.Read<ProjectItem>().ToList();

Akzeptierte Antwort

Ich nehme an, Sie verwenden bereits QueryMultiple; Es klingt wie die grundlegende Frage hier ist, was passiert, wenn Sie mehr lesen, als es gibt Gitter. Ich nehme an, dass es eine leere Sequenz zurückgeben könnte, aber ich vermute, dass eine Art TryRead vorzuziehen wäre. Nein, das hat es derzeit nicht - aber theoretisch könnte es sein.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum