Строка подключения SubSonic для SQLite - PullRequest
1 голос
/ 30 апреля 2009

Я пишу настольное приложение, которому нужен простой уровень персистентности - я узнал о SubSonic и его возможности работать с SQLite. Однако мне нужно сохранить файл базы данных в папке AppData пользователя и не знаю, как поместить это значение в app.config - я не хочу использовать абсолютные пути.

Может ли app.config каким-либо образом получить доступ к переменным среды или к справочной папке данных приложения?

Ответы [ 4 ]

2 голосов
/ 01 мая 2009

Для subsonic v2.x я бы проигнорировал строку подключения app.config и просто установил ее во время выполнения перед работой с базой данных. Имя провайдера, конечно же, остается прежним.

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3");

DataService.Providers["Northwind"].DefaultConnectionString =
            String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath);
1 голос
/ 30 апреля 2009

Нет способа указать папку AppData в app.config для строки подключения.

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

0 голосов
/ 01 мая 2009

Существует несколько способов использования ASP.NET на любом языке

Server.MapPath ("~") вернет корень приложения в виде полного имени пути, затем вы можете просто добавить к нему "/ app_data", чтобы получить полный путь.

В качестве альтернативы проверьте HttpContext.Current.Request и HttpContext.Current.Application Есть множество (и гораздо лучше, чем то, что я только что упомянул) свойств, которые предоставят вам ту же папку - будучи корнем приложения в качестве полного пути s.

Обратите внимание, что все это должно работать, даже если у вас есть приложение в качестве виртуальной папки и обычная папка с приложением, настроенным в IIS для этой папки

Однако это возможно только во время выполнения, поэтому об этом нельзя упоминать в app.config. вы можете попробовать использовать относительные пути, из которых app.config является резидентным IE "../App_Data" или "/ App_data", но я не уверен в ваших точных требованиях.

Удачи

0 голосов
/ 01 мая 2009

«Базовый способ» поиска приложений - использовать Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)

Это позволит найти правильный путь к данным приложения независимо от платформы.

...