Как получить доступ к строке подключения из другого проекта

В моем решении в Visual Studio 2010 есть два проекта.
Проект 1 содержит app.config с ConnectionString.

Как я могу получить доступ к этому ConnectionString из проекта 2?

Поскольку они оба используют один и тот же ConnectionString, я бы предпочел иметь только один экземпляр в своем решении.


person gulbaek    schedule 06.06.2011    source источник
comment
что такое второй тип проекта? это библиотека классов или приложение win или что?   -  person Amir Ismail    schedule 06.06.2011
comment
если природа ваших двух проектов требует, чтобы они имели очень разные файлы app.config, решение связать один из них с другим проектом может быть неоптимальным. Вы также можете использовать пользовательский файл app.config, называемый чем-то другим, и открыть его из обоих с правильным кодированием пространства имен System.Configuration, я думаю...   -  person Davide Piras    schedule 06.06.2011
comment
#Miroprocessor они оба являются библиотекой классов   -  person gulbaek    schedule 06.06.2011


Ответы (5)


Вы можете добавить файлы как ссылку на файл в один из ваших проекты.

Используйте Add an Existing Item для проекта, в который вы хотите добавить файл — кнопка Open имеет маленькую стрелку вниз, если вы нажмете на нее, вы можете выбрать Add as Link.

Это добавит файл как ссылку из исходного местоположения, то есть у вас будет только один физический файл.

person Oded    schedule 06.06.2011
comment
Хорошо, но эта идея хороша, чтобы использовать все настройки в app.config, а не об использовании одной или нескольких из этих настроек или исключении некоторых настроек ;). - person shA.t; 05.01.2017

Другая идея состоит в том, чтобы использовать контейнер IoC, такой как Ninject, вводя строку подключения в конструктор класса, в котором она вам нужна. Это мало чем отличается от фабричного шаблона.

Примечание: вам не нужно использовать Entity Framework для использования Ninject.

См. этот пост: Ninject - конструкторы привязки с аргументами/подключением Entity Framework строка

person evodev    schedule 30.11.2012

Помимо ссылки на файл, предложенной в ответе Oded, вы можете рассмотреть возможность рефакторинга своего приложения для использования сборки доступа к данным commom, которая содержит класс DatabaseConnectionFactory или тому подобное. Эта сборка будет содержать строку подключения в своих настройках

person eFloh    schedule 06.06.2011
comment
#eFloh спасибо за ваш ответ, в итоге я переписал свой код, как вы и предложили. - person gulbaek; 09.06.2011

Если есть только определенный раздел, которым вы хотите поделиться (connectionStrings в вашем случае), то связывание не сработает для вас. Вместо этого вы можете сделать что-то вроде этого:

The solution is to store the connection strings on the web.config of the parent web app. 
Note that the web site root is also an app, so you can store a web.config in there (i.e. c:\inetpub\wwwroot\web.config) which will be inherited by all apps under it.
c:\inetpub\wwwroot\web.config -> common configuration. 
c:\inetpub\wwwroot\app1\web.config -> configuration for app1
c:\inetpub\wwwroot\app2\web.config -> configuration for app2. 

In the case the default web site root is off limits, you can create a root app to contain all other apps and store the common configuration there. 
c:\inetpub\wwwroot\myrootapp\web.config-> common configuration. c:\inetpub\wwwroot\myrootapp\app1\web.config -> configuration for app1 c:\inetpub\wwwroot\myrootapp\app2\web.config -> configuration for app2.
person Vijay Sirigiri    schedule 06.06.2011

Если в вашем проекте 2 есть ссылка на проект 1, то в Project1 может быть класс с открытым свойством ConnectionString.

Кстати, "класс" может прочитать строку подключения из app.config.

person Shuhel Ahmed    schedule 06.06.2011