Dapper ora (e per un po 'di tempo) si occupa di questo internamente. Esso funziona solo ™
originale risposta (obsoleto):
Non sei sbagliato. Il motivo per cui non ho notato questo inconveniente è che per motivi legacy (in particolare: usavamo LINQ-to-SQL esclusivamente) la nostra connessione primaria-like-thing è una DataContext
- quindi esporremo i metodi dapper come metodi di estensione su DataContext
.
La cosa stupida è: ciò che questi metodi fanno è:
using(db.Connection.EnsureOpen()) {
db.Connection.{the dapper method}
}
Ecco EnsureOpen è un metodo sfacciato che:
- se la connessione è aperta, restituisce null
- in caso contrario, apre la connessione e restituisce un token IDisposable che chiude la connessione quando viene eseguito
Quindi: ci siamo sentiti ovviamente esattamente il tuo dolore, ma abbiamo implementato un livello più in alto.
Si prega di registrarlo come una richiesta di funzionalità. Noi abbiamo tutto il codice (anche se dovrò modificarlo leggermente per adattarlo al "lettore" per i dati non bufferizzati) - non c'è assolutamente alcun motivo per cui dapper non possa assumerne la proprietà.
fonte
2012-09-27 20:01:04
Questo cambiamento è ora impegnato btw –
Ho visto questa mattina :) Grazie mille. Mi piace come lo gestisci ...se è già aperto, lasciarlo aperto. Se è chiuso, chiudilo quando hai finito. Semplice. – smdrager
@MarcGravell Qual è la sintassi per la gestione delle connessioni ora? –