#vb.net #connection-string #lazy-loading #class-library
#vb.net #строка подключения #отложенная загрузка #class-library
Вопрос:
Я действительно изо всех сил пытаюсь разобраться с идеей работы с библиотекой классов, и я в значительной степени придерживаюсь идеи просто поддерживать отдельные проекты с дублирующимися классами, а не с общей библиотекой классов.
Я создал решение, которое содержит один проект библиотеки классов и два веб-приложения. Мои основные проблемы — это строки подключения. Они хранятся / объявлены в веб-проектах, и мне приходится передавать их в библиотеку классов каждый раз, когда я выполняю какой-либо доступ к данным. Я вроде понимаю, почему я должен это делать, поэтому я пока этим занимаюсь.
Теперь это привело меня к проблеме / вопросу с отложенной загрузкой. Я использую отложенную загрузку для следующего свойства:
Public Property KeyRelationshipManager() As Employee
Get
If _keyRelationshipManager Is Nothing Then
_keyRelationshipManager = Employee.GetEmployee(_keyRelationshipManagerStaffNumber)
Return _keyRelationshipManager
Else
Return _keyRelationshipManager
End If
End Get
Set(ByVal value As AECOM.Employee)
_keyRelationshipManager = value
End Set
End Property
Поскольку это свойство использует функцию:
Employee.GetEmployee
Мне нужно передать строку подключения этой функции.
Это означает, что мне нужно было бы передавать строку подключения в свойство каждый раз, когда я его использую, чтобы я мог передавать ее в функцию.
Это правильно? Мне это не кажется правильным, потому что мне придется настроить огромное количество функций и свойств и пройти через строку connections.
Ответ №1:
Почему вы передаете строку подключения в библиотеку классов? Используйте ConfigurationManager.ConnectionStrings["myClassLibraryConnection"]
в своей библиотеке классов. Пока у вас есть эта строка подключения в конфигурационных файлах обоих ваших хост-приложений, все должно быть в порядке. Это задание файлов web.config связать конфигурацию разных библиотек классов для формирования единого приложения.
Комментарии:
1. Потому что я думал, что это правильный способ сделать это, мне кажется неправильным, но это то, что я прочитал. Также я не могу получить доступ к ConfigurationManager в моей библиотеке. Есть ли ссылка, которую мне нужно добавить, или пространство имен для импорта? Я бы предпочел сделать это таким образом.
2. Ну, передача этого, безусловно, была бы лучше, чем жесткое кодирование в библиотеке классов. Однако указание вашей строки подключения в web.config хост-приложения фактически совпадает с ее передачей — ваше хост-приложение сообщает вашей библиотеке классов, какую базу данных использовать.
ConfigurationManager
находится вSystem.Configuration
пространстве имен.3. спасибо за это. Мне это очень не нравилось, но я думаю, что наконец-то добрался туда.
4. Я бы отметил ваш ответ как полезный, но у меня пока нет репутации, так что вот вам: 1!
5. Также следует добавить, вам нужно ссылаться на систему. Configuration.dll