5

我们一直在使用 EF 作为当前应用程序中大多数数据访问的主干,我们正在慢慢地从它转移到一些服务器密集型查询,并用 Dapper 代替它。

考虑到这一点,实现与 Autofac 连接的首选方式是什么?是注入 IDBConnection 还是连接字符串?IDBConnection 对我来说感觉更好,但如果您使用“使用”,它会被丢弃,后续调用无法访问。

4

1 回答 1

7

我们有同时使用 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。

于 2013-07-05T04:05:06.813 回答