C# 使用what';这是将Autofac和Dapper结合起来的首选方式

C# 使用what';这是将Autofac和Dapper结合起来的首选方式,c#,inversion-of-control,ioc-container,autofac,dapper,C#,Inversion Of Control,Ioc Container,Autofac,Dapper,在我们当前的应用程序中,我们一直使用EF作为大多数数据访问的主干,而在一些服务器密集型的查询中,我们正慢慢地从EF转移到它,取而代之的是Dapper 考虑到这一点,实现与Autofac的连接的首选方式是什么?是注入IDBConnection还是连接字符串?IDBConnection对我来说感觉更好,但如果您使用“using”,它将被释放,后续调用无法访问。我们的项目同时使用EF和Dapper。我们正在这样注册IDB连接: builder.Register(c =>

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


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

我们的项目同时使用EF和Dapper。我们正在这样注册IDB连接:

        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();
builder.Register(c=>
{
var db=c.Resolve();
if(db.Database.Connection.State!=ConnectionState.Open)
{
db.Database.Connection.Open();
}
返回db.Database.Connection;
})
.As()
.ExternallyOwned()//DbContext拥有连接,并在处理时将其关闭。
.InstancePerHttpRequest();

和大多数事情一样,很少有一种“首选”方式。如果你有建议,你知道工作,这可能是值得张贴他们,但。。。