在asp.net应用程序中管理与数据库的连接

时间:2009-03-17 14:51:36

标签: asp.net vb.net architecture connection-pooling

我想知道,在asp.net中管理数据库连接的最佳方法是什么。

我的应用程序是使用N层架构构建的。 DAL由静态类和

等方法组成
Public Shared Sub Delete( _
    ByVal connection As MyConnectionClass, _
    ByVal contact_id As Integer, _
    ByVal contact_timestamp As Date _
)

    With connection.ProcParams
        .Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32))
        .Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date))
    End With

    connection.Execute("PKG_DATA_ACCESS.DeleteContact")

End Sub

这里需要注意的是,我将连接从BLL传递给DAL。

以下是我考虑过的观点,但对我来说似乎都没有,所以我只是在征求意见。

我应该在MasterPage中创建连接,将其存储在对象中,然后在创建它时将其传递给我的业务对象(我正在努力避免的事情)

我是否应该使用静态类创建连接并在其上调用类似CreateConnection的方法,从我的业务对象的构造函数(我想要的东西,但我不希望每个对象有一个连接,我' d喜欢它为我的对象的所有实例共享,但由于asp.net是多线程的,静态类对存储连接没有意义)

理想情况下,该解决方案在Windows窗体环境中也应该运行良好(因此没有连接存储在会话中,并在类中使用静态方法检索它,对于当前上下文)

1 个答案:

答案 0 :(得分:13)

不要试图坚持连接。在您使用它的每个范围内实例化它。 .Net将为您管理一个连接池,在windows窗体或asp.net中。

尝试保持连接是一个会话对象,或者在母版页中实际上会损害性能,更不用说引入其他问题了。

来自BC的评论:

连接字符串必须是相同的字符串才能在同一个池中结束。

相关问题