Желая развернуть мой проект на разных серверах, я предпочел бы указать строку подключения с использованием относительного пути. Кажется, я не могу заставить это работать и хочу знать, есть ли у него какой-то трюк...?
С System.Data.SQLite, как вы определяете файл базы данных в строке подключения, используя относительный путь
Ответ 1
Предложение
Вы можете создать абсолютный путь в приложении и передать это в строке подключения.
Итак, если вы знаете, что файл базы данных находится в подпапке database
папки приложения, вы можете сделать что-то вроде этого (С#):
string relativePath = @"database\myfile.s3db";
string currentPath;
string absolutePath;
string connectionString;
currentPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
absolutePath = System.IO.Path.Combine(currentPath,relativePath);
connectionString = string.Format("DataSource={0}", absolutePath);
SQLiteConnection cnn = new SQLiteConnection(connectionString);
(Возможно, кто-то может исправить меня, как получить текущий путь).
Ответ 2
Как насчет этого?
"Data Source=|DataDirectory|mydb.db;..."
Я считаю, что |DataDirectory|
указывает на каталог, в котором находится ваше приложение. Я использую NHibernate, и он работает со следующим:
<add key="hibernate.connection.connection_string"
value="Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >
Ответ 3
Вот так:
String currentPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);