Подтвердить что ты не робот

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

Мне нужно установить в 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"/>

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

4b9b3361

Ответ 1

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

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

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

В 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

Ответ 2

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

например.

data source=.\data\EmailDatabase.sqlite

Ответ 3

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

В App.config

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

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