使用什么是组合Autofac和Dapper的首选方式

Tim*_*Tim 5 c# ioc-container inversion-of-control autofac dapper

我们一直使用EF作为当前应用程序中大多数数据访问的主干,我们正在逐渐远离它,以获得更多服务器密集型查询,并将其替换为Dapper.

考虑到这一点,实现与Autofac连接的首选方法是什么?是注入IDBConnection还是连接字符串?IDBConnection对我来说感觉更好,但是如果你使用"使用"它会被处理掉,后来的电话无法访问.

小智 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();
Run Code Online (Sandbox Code Playgroud)

并在我们的控制器中注入IDbConnection.