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