是否可以打开IDbConnection
数据库并在当前请求中的所有调用方法中使用它,然后允许 DI 容器将其处理Application_EndRequest
,就像与 O/RM (如 Entity Framework)一起使用的“每个请求的上下文”模式一样?
或者我应该在每种方法中打开和关闭连接?
是否可以打开IDbConnection
数据库并在当前请求中的所有调用方法中使用它,然后允许 DI 容器将其处理Application_EndRequest
,就像与 O/RM (如 Entity Framework)一起使用的“每个请求的上下文”模式一样?
或者我应该在每种方法中打开和关闭连接?
更好的是您在请求中创建一个连接并在触发页面卸载事件时处理它。这样,您将处理掉不需要的资源。
你必须遵循这种方式:-
Override Page_PreInit:初始化连接,打开它并开始新的事务。
Override Page_Load:读取数据库并创建集合。
Override Page_Unload:提交/回滚事务,关闭连接。
覆盖 Dispose:实现 IDisposable 并释放基础对象。
我知道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的所有资源。
我希望这可以帮助你。