Verwenden Sie den bevorzugten Weg, um Autofac und Dapper zu kombinieren

autofac c# dapper inversion-of-control ioc-container

Frage

Wir verwenden EF als Rückgrat für den Großteil des Datenzugriffs in unserer aktuellen App, und wir entfernen uns langsam von den Server-intensiven Abfragen und ersetzen sie stattdessen durch Dapper.

Was ist der bevorzugte Weg, um die Verbindung mit Autofac zu realisieren? 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.

Beliebte Antwort

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 IDbConnection in unsere Controller injizieren.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum