请参阅以下代码:
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查询此表)。因此,必须查询数据库达一千万次才能获得相同的连接字符串一千万次。将连接字符串放在静态变量中还是有更好的方法是不好的做法?
我意识到将连接字符串放在配置文件中会更好,但我希望能保持一致。
答案 0 :(得分:1)
虽然这个答案并非针对.NET,但我实际上建议The Twelve-Factor App中提到的方法,摘录摘自config部分。
将配置存储在环境中
十二因素应用程序将配置存储在环境变量中(通常缩写为env vars或env)。在不更改任何代码的情况下,可以在部署之间轻松更改Env变量;与配置文件不同,它们几乎没有机会被意外地检入代码仓库;与自定义配置文件或其他配置机制不同......
该文档更多地针对 apps ,但我认为类似的方法在这里会很好用。您可以调用数据库以获取连接字符串一次,然后将其存储在进程或应用程序域环境中。在测试方面,这也将为您提供相当好的灵活性。