我们一直在使用EF作为当前应用程序中大多数数据访问的主干,我们正在逐渐远离它,以便进行一些服务器密集型查询并将其替换为Dapper。
考虑到这一点,实现与Autofac连接的首选方法是什么?是注入IDBConnection还是连接字符串? IDBConnection对我来说感觉更好,但是如果你使用“使用”它会被处理掉,后续的电话无法访问。
答案 0 :(得分: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。