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