Приложение.относительный путь строки подключения config

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

<add name="EmailsSQLite" connectionString="data source=c:UsersTestDocumentsVisual Studio 2008ProjectsTestConsoleEmailsdataEmailDatabase.sqlite" providerName="System.Data.SQLite"/>

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

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

это возможно?

3 ответов


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

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

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

в приложение.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

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

например.

data source=.\data\EmailDatabase.sqlite

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

В Приложение.config

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

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