Я добавляю уровень доступа к данным для нашего веб-приложения ASP.Net 2.0, которое было написано почти исключительно с использованием встроенных вызовов SQL и обильного использования копирования / вставки. Из-за бизнес-соображений я могу повторно учитывать только небольшие части приложения за раз (не могу освоиться и провести масштабный редизайн), поэтому мне приходится жить с определенными дизайнерскими решениями, пока все не станет достаточно слабым. внести большие изменения и правильно их протестировать.
Я решил использовать блок приложения доступа к данным корпоративной библиотеки в качестве основы для уровня доступа к данным в будущем, и одно такое предыдущее проектное решение вызывает у меня проблемы. В настоящее время мы получаем «основную» строку подключения для нашего приложения из базы данных администратора на основе идентификатора учетной записи, предоставленного пользователем, так что мы можем разрешить одной установке приложения доступ к нескольким базам данных. Моя проблема связана с попыткой выяснить, как лучше всего получить эту строку подключения (или идентификатор учетной записи) в DAL.
Предыдущая реализация сохраняла зашифрованную строку подключения в файле cookie, поэтому мой текущий подход к взлому состоит в том, чтобы получить оттуда строку подключения и затем использовать 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?
Любое руководство будет оценено. Спасибо.
Обновить
Позвольте мне уточнить. Для установки будет не более 3 или 4 различных цепочек подключения. «Идентификатор учетной записи» не является идентификатором пользователя и используется несколькими пользователями, чтобы указать, к какой базе данных следует подключиться.