2012-10-06 9 views
5

Abbiamo utilizzato EF come backbone per la maggior parte dell'accesso ai dati nella nostra app corrente e ci stiamo lentamente allontanando da esso per alcune delle query più a uso del server e sostituendolo con Dapper.Utilizzo del modo preferito di combinare Autofac e Dapper

Con questo in mente, qual è il modo preferito per implementare la connessione con Autofac? È inietti un IDBConnection o una stringa di connessione? IDBConnection mi sembra migliore, ma se usi "using" è disposto e non può essere raggiunto dalle chiamate successive.

+1

Come per la maggior parte delle cose, raramente esiste un unico modo "preferito". Se hai suggerimenti che sai funzionare, potrebbe valere la pena pubblicarli, ma ... –

risposta

6

Abbiamo un progetto che utilizza sia EF che Dapper. Stiamo registrando IDbConnection in questo modo:

 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(); 

E iniettando IDbConnection nei nostri controller.