2012-10-06 9 views
5

私たちは、現在のアプリケーションで大半のデータアクセスのバックボーンとしてEFを使用していましたが、サーバー集中型のクエリ代わりにDapperに置き換えてください。AutofacとDapperを組み合わせるのに好ましい方法を使用

これを念頭において、オートファックとの接続を実現するにはどうすればよいですか? IDBConnectionまたは接続文字列を挿入するのですか? IDBConnectionは私にとっては気分が良いですが、「使用する」を使用すると、それは破棄され、以降の呼び出しではアクセスできなくなります。

+1

ほとんどの場合と同様に、「優先する」方法はほとんどありません。あなたが仕事を知っているという提案があれば、投稿する価値はあるかもしれませんが... –

答えて

6

EFとDapperの両方を使用したプロジェクトがあります。 IDbConnectionを次のように登録しています:

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

私たちのコントローラにIDbConnectionを注入します。

関連する問題