1

是否可以打开IDbConnection数据库并在当前请求中的所有调用方法中使用它,然后允许 DI 容器将其处理Application_EndRequest,就像与 O/RM (如 Entity Framework)一起使用的“每个请求的上下文”模式一样?

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

4

2 回答 2

0

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

你必须遵循这种方式:-

  • Override Page_PreInit:初始化连接,打开它并开始新的事务。

  • Override Page_Load:读取数据库并创建集合。

  • Override Page_Unload:提交/回滚事务,关闭连接。

  • 覆盖 Dispose:实现 IDisposable 并释放基础对象。

于 2013-01-25T23:40:51.663 回答
0

我知道WebDbConnector库可以提供帮助。它将帮助您的 Web 应用程序使用 Ado.Net(SqlConnection)、Linq To Sql(DataContext) 和 Entity Framework(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

然后你可以实现关闭和释放继承WebDbConnectorHttpApplication的所有资源。

我希望这可以帮助你。

更多信息请访问https://github.com/congdongdotnet/WebDbConnector

于 2015-03-09T03:05:33.253 回答