-1

请看下面的代码:

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 查询该表)。因此,数据库必须查询一千万次才能获得相同的连接字符串一千万次。将连接字符串放在静态变量中是不好的做法还是有更好的方法?

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

4

1 回答 1

1

虽然这个答案不是非常特定于 .NET,但我实际上会推荐The Twelve-Factor App中提到的方法,下面摘自config部分。

在环境中存储配置

十二因素应用程序将配置存储在环境变量中(通常缩写为 env vars 或 env)。环境变量很容易在部署之间更改,而无需更改任何代码;与配置文件不同,它们被意外签入代码仓库的可能性很小;与自定义配置文件或其他配置机制不同...

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

于 2013-04-23T22:33:26.507 回答