Относительный путь строки подключения App.config - PullRequest
14 голосов
/ 15 февраля 2011

Мне нужно установить в app.config строку подключения sqlite. Я хочу указать путь относительно папок отладки / выпуска, в которые будет скопирован файл базы данных.

<add name="EmailsSQLite" connectionString="data source=c:\Users\Test\Documents\Visual Studio 2008\Projects\TestConsole\Emails\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

и я хочу что-то вроде:

<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

Возможно ли это?

Ответы [ 3 ]

15 голосов
/ 15 февраля 2011

Вы можете указать относительный путь, как описано в ответе Левши.

Однако это будет относительно текущего рабочего каталога, который не обязательно будет каталогом, содержащим ваш исполняемый файл.

OneОбходной путь - изменить строку подключения перед ее использованием, например,

В app.config:

 connectionString="data source={AppDir}\data\EmailDatabase.sqlite

В вашем коде:

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];    
if (c == null)
{
    ... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString
4 голосов
/ 03 января 2017

Да, это возможно. Попробуйте использовать | DataDirectory |.

In App.config

<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|\Database.sqlite;" providerName="System.Data.SQLite"/>

Больше информации на этой странице https://msdn.microsoft.com/en-us/library/cc716756.aspx

4 голосов
/ 15 февраля 2011

Попробуйте использовать "."до первой обратной косой черты в части строки источника данных.

например.

data source=.\data\EmailDatabase.sqlite
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...