Dapper ahora (y durante bastante tiempo) se ocupa de esto internamente. Simplemente funciona ™
Respuesta original (obsoleta):
No está mal. La razón por la que no me había dado cuenta de este inconveniente es que por razones heredadas (específicamente: solíamos usar LINQ-to-SQL exclusivamente) nuestra conexión-como-cosa primaria es una DataContext
, por lo que volvemos a exponer los métodos apresurados como métodos de extensión en DataContext
.
El disparate es: ¿cuál de estos métodos hacen es:
using(db.Connection.EnsureOpen()) {
db.Connection.{the dapper method}
}
Aquí EnsureOpen es un método descarado que:
- si la conexión está abierta, devuelve null
- de lo contrario, abre la conexión y devuelve un token IDisposable que cierra la conexión cuando finaliza
Entonces: obviamente sentimos exactamente su dolor, pero lo implementamos una capa más arriba.
Por favor, inicie sesión como una solicitud de función. Tenemos tenemos todo el código (aunque tendré que modificarlo ligeramente para que se ajuste al "lector" de datos no almacenados en el búfer) - no hay absolutamente ninguna razón por la que el atildado no pueda apropiarse de esto.
Este cambio se ha comprometido por cierto –
vi esta mañana :) Muchas gracias. Me gusta la forma en que lo manejas ...si ya está abierto, déjalo abierto. Si está cerrado, ciérrelo cuando termine. Sencillo. – smdrager
@MarcGravell ¿Cuál es la sintaxis para el manejo de la conexión ahora? –