¿Cómo manejo las conexiones de bases de datos con Dapper en .NET?

.net c# dapper

Pregunta

He estado jugando con Dapper, pero no estoy seguro de la mejor manera de manejar la conexión de la base de datos.

La mayoría de los ejemplos muestran el objeto de conexión que se está creando en la clase de ejemplo, o incluso en cada método. Pero me parece incorrecto hacer referencia a una cadena de conexión en cada clss, incluso si está extrayendo de la web.config.

Mi experiencia ha sido con el uso de un DbDataContext o DbContext con Linq to SQL o Entity Framework, así que esto es nuevo para mí.

¿Cómo estructurar mis aplicaciones web cuando uso Dapper como mi estrategia de acceso a datos?

Respuesta popular

Creé métodos de extensión con una propiedad que recupera la cadena de conexión de la configuración. Esto permite que las personas que llaman no tengan que saber nada sobre la conexión, ya sea abierta o cerrada, etc. Este método te limita un poco ya que ocultas algunas de las funcionalidades de Dapper, pero en nuestra aplicación bastante simple funcionó bien para nosotros , y si necesitábamos más funcionalidad de Dapper, siempre podríamos agregar un nuevo método de extensión que la exponga.

internal static string ConnectionString = new Configuration().ConnectionString;

    internal static IEnumerable<T> Query<T>(string sql, object param = null)
    {
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            return conn.Query<T>(sql, param);
        }
    }

    internal static int Execute(string sql, object param = null)
    {
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            return conn.Execute(sql, param);
        }
    }


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é