Ich habe den Code zur Verbindung mit der Datenbank in einer der Anwendungen überprüft, an der ich arbeite, und das gesehen
if (_dbConnection == null)
_dbConnection = GetConnection();
while (_dbConnection.State == ConnectionState.Connecting)
{
//Do Nothing until things are connected.
}
if (_dbConnection.State != ConnectionState.Open)
_dbConnection.Open();
var command = GetCommand(commandType);
command.Connection = _dbConnection;
return command;
Die while-Schleife macht mir Sorgen. Gibt es einen besseren Weg, um nichts zu tun, bis die Verbindung hergestellt ist?
BEARBEITEN:
Die Verbindung wird wie folgt hergestellt
private static IDbConnection GetConnection()
{
return new SqlConnection(ConfigurationManager.ConnectionStrings["CoonectionStringName"].ConnectionString);
}
2 Stimmen
Welche Art von Verbindung? System.Data.SqlClient.SqlConnection?
1 Stimmen
Ich würde auch ein Timeout setzen sowie im while-Loop eine Verzögerungs-/Warte-Anweisung einfügen, damit keine CPU-Zeit verschwendet wird.
0 Stimmen
Die Klasse der Verbindung ist System.Data.IDbConnection
0 Stimmen
Kannst du DbConnection anstelle von IDbConnection verwenden?
0 Stimmen
Ich kenne den Unterschied zwischen denen beiden nicht wirklich. Ich könnte es mir vorstellen.
0 Stimmen
Nun, wenn Sie IDbConnection verwenden, werden Sie die im DbConnection-Klasse spezifizierten StateChange-Ereignisse verpassen.
0 Stimmen
Dieser Methode sieht aus, als würde sie in einer Batch-Datei verwendet oder als würde sie versuchen, die Nutzung einer offenen Verbindung zu optimieren. Wo/Wann wird die Verbindung geschlossen?