Cómo refactorizar repitiendo IDbConnection.open \ close?

dapper dbconnection refactoring

Pregunta

tal vez es una pregunta estúpida, pero me confundí. Yo uso Dapper con Autofac (DI) y en mi capa de negocios siempre utilizo la siguiente construcción:

db.Open(); //db is IDbConnection instance
db.InsertOrDeleteOrUpdate(...)
db.Close();

si una buena solución para ocultar db.Open () y db.Close () por el método de delegado? Por ejemplo:

dbHelper.do(db => db.InsertOrDeleteOrUpdate(...));

¿Qué haces en tales casos?

Respuesta aceptada

El código redundante no es el único problema en este código. Tu código está llegando a la base de datos para cada acción. Esto afectará el rendimiento si su DBServer se implementa en una máquina remota. Refiere esta respuesta.

¿Alguna vez te has encontrado con el patrón UnitOfWork? Es una muy buena solución para manejar conexiones en un nivel superior.

Connection Factory es otra buena alternativa y se puede usar con UnitOfWork. Pero personalmente prefiero solo UnitOfWork.

Refiera esta respuesta para el código de muestra de UnitOfWork.

Una vez que elija desde arriba, es fácil reducir la redundancia mediante el uso del patrón de "conexión por solicitud". DalSession identificar la ubicación centralizada en su código donde crear DalSession y dónde desecharlo.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué