Hier ist ein Codeausschnitt von meinem eigenen Helfer, aber es hat einige Fehler.
/// <summary>
/// Execute a command that returns multiple result sets, and access each in turn
/// </summary>
public static SqlMapper.GridReader QueryMultiple(string sql, dynamic param = null, string connectionName = null)
{
using (SqlConnection connection = GetOpenConnection(connectionName))
{ return connection.QueryMultiple(sql, param);}
}
QueryMultiple wird manuell von einem externen Programm aufgerufen und geschlossen. Kurz darauf sollte SqlConnection automatisch geschlossen werden, wie kann ich meinen Helfer einpacken? Danke im Voraus.
Seltsamerweise könnte eine Option hier sein: Gib ihr keine offene Verbindung. Dies ist noch nicht implementiert, aber wenn Sie die Version von Github ziehen, benötigt es jetzt viel mehr Kontrolle über die Verbindung, wenn es nötig ist. Alle Hauptmethoden ( Query[<T>]
, QueryMultiple
, Execute
) funktionieren jetzt gut mit geschlossenen Verbindungen und schließen sie wieder, wenn es möglich ist. Also wenn du stattdessen hättest:
return GetClosedConnection(connectionName).QueryMultiple(sql, param);
dann wird es automatisch geschlossen, wenn der GridReader
das Ende der Daten erreicht. Beachten Sie, dass ich es neu strukturiert habe, um sicherzustellen, dass wir die Verbindung beim Verlassen der Methode nicht Dispose()
.