2013-04-23 3 views
-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 запрашивает эту таблицу). Поэтому для того, чтобы получить одну и ту же строку соединения десять миллионов раз, необходимо запросить базу данных до десяти миллионов раз. Неправильно ли использовать строку соединения в статической переменной или есть лучший способ?

Я понимаю, что было бы лучше положить строку подключения в файл конфигурации, но я надеюсь, что она будет последовательной.

+0

Строка подключения обычно хранится в файле конфигурации приложения. Кроме того, это может быть параметр реестра. Я никогда не видел приложения, где он будет храниться в базе данных, поэтому вам понадобится строка подключения для этой базы данных, чтобы получить нужную строку соединения. У вас есть причина не делать что-то прямо? – Neolisk

+0

@Neolisk, спасибо. Веб-приложение запрашивает базу данных, чтобы получить много строк подключения. Можно ли извлечь строку подключения из файла конфигурации и загрузить ее в app.config при запуске приложения? – w0051977

+0

'extract ... string from ... config file и загрузить ... в ... app.config ...'. Файл Config и app.config - это одно, а? Пожалуйста, объясни. Просьба также рассказать о нескольких строках подключения в вашем вопросе. – Neolisk

ответ

1

Хотя этот ответ не очень специфичен для .NET, я бы рекомендовал подход, упомянутый в The Twelve-Factor App, выдержка из приведенного ниже раздела на config.

магазин Config в среде

В двенадцать-фактор приложение хранит CONFIG в переменных окружения (часто сокращается до окр вары или окр). Env vars легко изменить между развертываниями без изменения кода; в отличие от конфигурационных файлов, мало вероятность того, что они будут случайно проверены в репо кода; и в отличие от пользовательских конфигурационных файлов или других механизмов конфигурации ...

Документ ориентирован в большей степени на приложений, но я думаю, что подобный подход будет работать хорошо здесь. Вы можете позвонить в базу данных, чтобы получить строку соединения один раз, а затем сохранить ее в своей среде процесса или домена приложения. Это также даст вам достаточно хорошую гибкость, когда дело доходит до тестирования.

Смежные вопросы