Как лучше хранить mdf файл с установкой? - PullRequest
1 голос
/ 05 апреля 2019

Я сделал идеальное приложение, и я должен сделать инсталляцию для этого приложения. Но у меня есть localDB, и есть моя проблема, как и где хранить файл mdf. Я искал об этом в Google, но пока не нашел решения.

Я пробовал два решения.

  1. Включить файл mdf в папку установки через exe-файл. Когда я это делаю, программа запускается и работает нормально, база данных работает, пока у меня не появятся команды обновления или вставки, выдается исключение, которое говорит о том, что db доступна только для чтения. Я попытался запустить с правами администратора или изменить привилегии, но проблема все та же.
  2. Сохранение файла mdf в mydocuments или appdata. Таким образом, я создаю специальную папку через установщик VS и добавляю туда файл mdf, но проблема в том, что я не знаю, как создать относительную строку подключения, потому что она установлена ​​в каталог данных.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <connectionStrings>

    <add name="Test1" connectionString=" Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Artikli.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

  </connectionStrings>

</configuration>

Где другие программы хранят свои базы данных? Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 05 апреля 2019

Вы должны настроить вашу строку подключения программно в какой-то специальной папке, к которой у пользователя будет доступ, например:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\your folder\your app\your database.mdf";
        string connectionString = string.Format("Data Source = {0}; Integrated Security = True; providerName = System.Data.SqlClient;", path);

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

File.Copy(Application.StartupPath + @"\your database.mdf", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\your folder\your app\your database.mdf");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...