在我们当前应用程序中,我们一直将EF用作大多数数据访问的中枢,而对于一些服务器密集型查询,我们正逐渐将其移开,而改用Dapper。

考虑到这一点,用Autofac实现连接的首选方法是什么?是注入(inject)IDBConnection还是连接字符串? IDBConnection对我来说感觉更好,但是如果您使用“using”,则该IDBConnection会被处理,以后的调用将无法访问。

最佳答案

我们有同时使用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();

并在我们的 Controller 中注入(inject)IDbConnection。

关于c# - 使用什么是结合Autofac和Dapper的首选方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12762733/

10-09 18:48