Dal momento che si sta utilizzando ADO.NET, è possibile utilizzare integrato collegamento di ADO.NET pool capacità. In realtà, mi permetta di precisare che: è necessario che utilizzi sempre le funzionalità di pool di connessioni integrate di ADO.NET. In questo modo otterrai il runtime .NET per gestire in modo trasparente le tue connessioni per te in background. Manterrà le connessioni aperte per un po 'anche se le hai chiuse e riutilizzate se apri una nuova connessione. Questa è roba davvero veloce.
Assicurarsi di indicare nella stringa di connessione che si desidera disporre di connessioni in pool in quanto potrebbe non essere il comportamento predefinito.
Hai solo bisogno di creare connessioni a livello locale quando ne avete bisogno, dato che sono convogliati nel Fondo backrgound quindi non c'è overhead nella creazione di una nuova connessione:
using (var connection = SomeMethodThatCreatesAConnectionObject())
{
// do your stuff here
connection.Close(); // this is not necessary as
// Dispose() closes it anyway
// but still nice to do.
}
Ecco come si suppone per farlo in .NET.
fonte
2009-11-10 12:35:54
Non c'è nulla da guadagnare mantenendo la connessione aperta (supponendo che il provider utilizzi il pool di connessioni). Il connettore ufficiale MySQL Connector/Net utilizza il pool di connessioni per impostazione predefinita. L'OP non menziona il fornitore che stanno effettivamente utilizzando, ma se supporta il pool, utilizzerei una strategia aperta late/close early e consentirò al provider di gestire le connessioni fisiche sottostanti. – LukeH
scusa per l'aggiunta di commenti per il thread precedente. Ho letto http://download.oracle.com/javadb/10.3.3.0/devguide/cdevconcepts89498.html, sembra che finchè la tua applicazione ha più thread/transazioni, è buona pratica assegnare ogni thread ad una connessione distinta . Grazie. –