5

我想知道,在 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 之类的方法,从我的业务对象的构造函数(我想要的东西,但我不想每个对象都有一个连接,我想要它为我的对象的所有实例共享,但由于 asp.net 是多线程的,静态类对存储连接没有意义)

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

4

1 回答 1

13

根本不要尝试保持连接。在您使用它的每个范围内实例化它。.Net 将为您管理一个连接池,无论是在 Windows 窗体中还是在 asp.net 中。

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

来自 BC 的评论:

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

于 2009-03-17T14:58:17.627 回答