Действительно испытываю трудности с библиотекой классов, как мне справиться с отложенной загрузкой / ConnectionString в библиотеке?

#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