Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 数据库连接生存期-短生存期vs每个请求_Sql Server_Asp.net Mvc_Entity Framework_Connection Pooling_Structuremap - Fatal编程技术网

Sql server 数据库连接生存期-短生存期vs每个请求

Sql server 数据库连接生存期-短生存期vs每个请求,sql-server,asp.net-mvc,entity-framework,connection-pooling,structuremap,Sql Server,Asp.net Mvc,Entity Framework,Connection Pooling,Structuremap,我有一个MVC应用程序,使用StructureMap for IoC 在应用程序中,通过实体框架的数据访问率为95%;但是,有一些原始ADO.NET存储库使用了IDbConnection实例 目前,我使用IoC容器注册IDbConnection,如下所示 init.For<IDbConnection>() .HybridHttpOrThreadLocalScoped() .Use(() => this._connectionFactory.CreateConne

我有一个MVC应用程序,使用StructureMap for IoC

在应用程序中,通过实体框架的数据访问率为95%;但是,有一些原始ADO.NET存储库使用了
IDbConnection
实例

目前,我使用IoC容器注册
IDbConnection
,如下所示

init.For<IDbConnection>()
    .HybridHttpOrThreadLocalScoped()
    .Use(() => this._connectionFactory.CreateConnection(config.ConnectionString));

init.Forward<IDbConnection, DbConnection>();
init.For()
.HybridHttpOrthReadLocalScope()文件
.使用(()=>this._connectionFactory.CreateConnection(config.ConnectionString));
init.Forward();
。。。并在必要时将
IDbConnection
注入原始ADO.NET存储库

但是,目前我有
\u connectionFactory.CreateConnection()
返回一个打开的连接,目的是允许StructureMap在请求结束时关闭连接

这样做明智吗


在请求的整个生命周期内共享一个打开的连接,还是仅在必要时打开/关闭并保持连接的短暂性更好?

是否希望EF进程和ADO.NET进程在一个事务中运行?目前这不是一个要求。然而,沿着某条路线走下去会不会使这一点在将来变得困难?也许,如果您想将代码包装在
TransactionScope
(这是在一个事务中捆绑db交互的一种推荐方式),则当此作用域处于活动状态时,必须打开所有连接。还有,但这可能有点离题,它们应该有完全相同的连接字符串,以防止MSDTC启动。我认为连接字符串不会有问题。我更感兴趣的是,在整个请求范围内保持连接打开是否是一种不好的做法。