重用连接字符串

时间:2013-04-23 21:26:45

标签: vb.net design-patterns

请参阅以下代码:

Namespace DataAccessGateway
    Public Class clsAudit
        Implements IAudit

        Private _ConString As String
        Private _Provider As String

        Public Sub New()
            _ConString = ConfigurationManager.ConnectionStrings("dbConnection").ConnectionString
            _Provider = ConfigurationManager.ConnectionStrings("dbConnection").ProviderName
        End Sub

        Public Function AddAudit(ByVal tyDeletion As typeDeletion) As Integer Implements IAudit.AddAudit
            Dim intCount As Integer
            Dim objParameterValues As New clsParameterValues
            Dim iConnectionBLL As iConnectionBLL
            Dim tyInnkeeperPremises As New typeInnkeeperPremises
            Dim objCon As DbConnection
            Try
                Dim paramValues() As DbParameter
                objParameterValues = New clsParameterValues
                iConnectionBLL = New clsConnectionBLL()
                objCon = iConnectionBLL.getDatabaseTypeByDescription("AUDIT")
                Using objCon
                    Dim strSQL As String
                    strSQL = "INSERT INTO dbAudit (Reference) VALUES (@Reference)"
                    objParameterValues.AssignParameterValues("@Reference", tyDeletion.Reference, 1)
                    paramValues = objParameterValues.getParameterValues
                    intCount = clsDatabaseHelper.ExecuteNonQuery(objCon, CommandType.Text, strSQL, paramValues)
                End Using
                Return intCount
            Catch ex As Exception
                Return -1
            End Try
        End Function
    End Class
End Namespace

此代码作为批处理作业的一部分调用,即一天内可以一次调用一千万次。审计数据库的连接字符串存储在加密的数据库表中,即tbl_database(getDatabaseTypeByDescription查询此表)。因此,必须查询数据库达一千万次才能获得相同的连接字符串一千万次。将连接字符串放在静态变量中还是有更好的方法是不好的做法?

我意识到将连接字符串放在配置文件中会更好,但我希望能保持一致。

1 个答案:

答案 0 :(得分:1)

虽然这个答案并非针对.NET,但我实际上建议The Twelve-Factor App中提到的方法,摘录摘自config部分。

  

将配置存储在环境中

     

十二因素应用程序将配置存储在环境变量中(通常缩写为env vars或env)。在不更改任何代码的情况下,可以在部署之间轻松更改Env变量;与配置文件不同,它们几乎没有机会被意外地检入代码仓库;与自定义配置文件或其他配置机制不同......

该文档更多地针对 apps ,但我认为类似的方法在这里会很好用。您可以调用数据库以获取连接字符串一次,然后将其存储在进程或应用程序域环境中。在测试方面,这也将为您提供相当好的灵活性。