Asp.net 每个请求与ADO.net的连接,是还是否?

Asp.net 每个请求与ADO.net的连接,是还是否?,asp.net,entity-framework,ado.net,database-connection,connection-pooling,Asp.net,Entity Framework,Ado.net,Database Connection,Connection Pooling,打开数据库的IDbConnection并在当前请求中的所有调用方法期间使用它,然后允许DI容器在Application\u EndRequest中处理它,就像在类似O/RMs的实体框架中使用的“每个请求的上下文”模式一样,可以吗 或者我应该在每个方法中打开和关闭连接吗 更好的方法是在请求中创建一个连接,并在触发页面卸载事件时处理它。这样,您将处理掉不需要的资源 你必须这样做:- 重写页面\u PreInit:初始化连接,打开它并启动新事务 覆盖页面加载:读取数据库并创建集合 覆盖页面卸载:提交

打开数据库的
IDbConnection
并在当前请求中的所有调用方法期间使用它,然后允许DI容器在
Application\u EndRequest
中处理它,就像在类似O/RMs的实体框架中使用的“每个请求的上下文”模式一样,可以吗


或者我应该在每个方法中打开和关闭连接吗

更好的方法是在请求中创建一个连接,并在触发页面卸载事件时处理它。这样,您将处理掉不需要的资源

你必须这样做:-

  • 重写页面\u PreInit:初始化连接,打开它并启动新事务

  • 覆盖页面加载:读取数据库并创建集合

  • 覆盖页面卸载:提交/回滚事务,关闭连接

  • 覆盖Dispose:实现IDisposable和Dispose基本对象


我知道WebDbConnector库可以提供帮助。它将帮助您的web应用程序使用Ado.Net(SqlConnection)、Linq to Sql(DataContext)和实体框架(ObjectContext和DbContext)为每个请求创建和维护到数据库的连接

例如:

// The first parameter of SqlWebDbConnector is connection string
// or connection string name(in Web.config)
var context = new WebDbConnectorContext<SqlConnection>(
    new SqlWebDbConnector("Test", true));
var sqlContext = context.GetCurrentContext();
// TODO: write your own code
//SqlWebDbConnector的第一个参数是连接字符串
//或连接字符串名称(在Web.config中)
var context=新的WebDbConnectorContext(
新的SqlWebDbConnector(“Test”,true));
var sqlContext=context.GetCurrentContext();
//TODO:编写自己的代码
然后,您可以通过继承WebDbConnectorHttpApplication实现关闭和释放所有资源

我希望这能帮助你


更多信息请访问。

查看此链接:@FelipeOriani:感谢链接,因此该事务不适用于单连接