Я в процессе добавления уровня доступа к данным для нашего веб-приложения ASP.Net 2.0, которое было написано почти исключительно с использованием встроенных вызовов SQL и обильного использования copy/paste. Из-за проблем с бизнесом я могу только повторно распределить небольшие порции приложения за один раз (не могу уладить и сделать огромный перепроектированный проект), поэтому я должен жить с определенными проектными решениями, пока вещи не будут достаточно слабо связаны сделать большие изменения и проверить их должным образом.Обработка динамической строки подключения с помощью DAAB
Я решил использовать блок приложений доступа к данным в корпоративной библиотеке в качестве сантехники для уровня доступа к данным в будущем, и одно из таких решений предшествующего проекта вызывает у меня проблемы. В настоящее время мы получаем «основную» строку соединения для нашего приложения из базы данных администратора на основе идентификатора учетной записи, предоставленного пользователем, чтобы мы могли разрешить одной установке приложения обращаться к нескольким базам данных. Моя проблема связана с попыткой выяснить способ передовой практики получения этой строки соединения (или идентификатора учетной записи) в DAL.
Предыдущая реализация была хранения зашифрованной строки подключения в куки, так что мой текущий хак-подход, чтобы получить строку соединения оттуда, а затем использовать Daab следующим образом:
Public Shared Function GetResultsByKeywords(ByVal key1 As String, ByVal key2 As String, ByVal key3 As String, ByVal key4 As String) As DataTable
Dim db As SqlDatabase = New SqlDatabase(Connection.GetConnectString())
Dim dt As DataTable = New DataTable
Using dr As IDataReader = db.ExecuteReader("sel_eHELP_ITEMS", key1, key2, key3, key4)
dt.Load(dr)
End Using
Return dt
End Function
Где Connection. GetConnectString() извлекает строку подключения из файла cookie.
Я знаю, что это далеко не лучший способ сделать это, и мне нужно исправить это, но я борюсь с «правильным» способом сделать это. Возможно, создайте базовый класс, который я могу инициализировать с помощью строки подключения и наследовать все остальные классы, но я не уверен, как это будет выглядеть и где я сначала инициализирую экземпляр этого класса. На каждой странице перед доступом к любым функциям DAL?
Любое руководство будет оценено по достоинству. Спасибо.
Update
Позвольте мне уточнить. В большинстве случаев для установки будет 3 или 4 разных строки подключения. «Идентификатор учетной записи» не является идентификатором пользователя и используется несколькими пользователями для определения конкретной базы данных для подключения.
Спасибо. Это не совсем так, как я решил решить проблему, но она по-прежнему иллюстрирует базовую концепцию, которую я использовал. Нет больше строк подключения, хранящихся в файлах cookie! – smathson