2012-10-06 7 views
5

Wir haben EF als Grundlage für den Großteil des Datenzugriffs in unserer aktuellen App verwendet, und für einige der Server-intensiven Abfragen entfernen wir uns langsam davon und stattdessen durch Dapper ersetzen.Verwenden der bevorzugten Methode zum Kombinieren von Autofac und Dapper

In diesem Sinne, was ist der bevorzugte Weg, um die Verbindung mit Autofac zu implementieren? Soll eine IDBConnection oder eine Verbindungszeichenfolge eingefügt werden? IDBConnection fühlt sich für mich besser an, aber wenn Sie "verwenden" verwenden, ist es entsorgt und kann nicht durch nachfolgende Anrufe erreicht werden.

+1

Wie bei den meisten Dingen gibt es selten einen "bevorzugten" Weg. Wenn Sie Vorschläge haben, dass Sie arbeiten, lohnt es sich, sie zu veröffentlichen, aber ... –

Antwort

6

Wir haben Projekt mit EF und Dapper. Wir registrieren IDbConnection wie folgt:

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

Und injizieren IDbConnection in unseren Controllern.