代码之家  ›  专栏  ›  技术社区  ›  Martin

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

  •  5
  • Martin  · 技术社区  · 16 年前

    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。

    我是否应该在母版页中创建连接,将其存储在对象中,然后在创建业务对象时将其传递给业务对象(这是我试图避免的事情)

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

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

    1 回复  |  直到 16 年前
        1
  •  13
  •   Neil N HLGEM    16 年前

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

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

    根据BC的评论: