2012-10-06 4 views
5

Hemos utilizado EF como la red troncal para la mayoría de los accesos a datos en nuestra aplicación actual y nos alejamos lentamente de algunas de las consultas más intensivas en cuanto a servidores. y reemplazarlo con Dapper en su lugar.Uso de la forma preferida de combinar Autofac y Dapper

Teniendo esto en cuenta, ¿cuál es la forma preferida de implementar la conexión con Autofac? ¿Es para inyectar una IDBConnection o una cadena de conexión? IDBConnection se siente mejor para mí, pero si usa "usar" se elimina y no se puede acceder a él mediante llamadas posteriores.

+1

Como con la mayoría de las cosas, rara vez hay una sola forma de "preferencia". Si tiene sugerencias de que sabe que funciona, puede valer la pena publicarlas, pero ... –

Respuesta

6

Tenemos un proyecto usando EF y Dapper. Estamos registrando IDbConnection de la siguiente manera:

 builder.Register(c => 
      { 
       var db = c.Resolve<MyDbContext>(); 
       if (db.Database.Connection.State != ConnectionState.Open) 
       { 
        db.Database.Connection.Open(); 
       } 
       return db.Database.Connection; 
      }) 
       .As<IDbConnection>() 
       .ExternallyOwned() // DbContext owns connection and closes him when disposing. 
       .InstancePerHttpRequest(); 

Y inyectando IDbConnection en nuestros controladores.

Cuestiones relacionadas