Почему использование DataDirectory не работает, а полный путь работает? - PullRequest
0 голосов
/ 11 февраля 2020
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Source=|DataDirectory|\ITGS.accdb\ITGS.accdb");

Я использую Source=|DataDirectory|\ITGS.accdb, но по какой-то причине данные не добавляются; но когда я указываю полный путь, данные добавляются в базу данных.

Может кто-нибудь сказать, почему использование |DataDirectory| не работает?

1 Ответ

0 голосов
/ 12 февраля 2020

В среду выполнения. NET добавлена ​​поддержка макроса DataDirectory. Это позволяет Visual Studio помещать специальную переменную в строку подключения, которая будет развернута во время выполнения.

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

"Data Source=.\SQLExpress;AttachDbFileName=|DataDirectory|\data.mdf"

По умолчанию | DataDirectory | переменная будет расширена следующим образом:

  • Для приложений, размещенных в каталоге на пользовательском компьютере, это будет папка приложения (.exe).
  • Для приложений, запущенных в ClickOnce, это будет специальная папка данных, созданная ClickOnce
  • . Для веб-приложений это будет папка App_Data

Под капотом значение для | DataDirectory | просто происходит от свойства в домене приложения. Можно изменить это значение и переопределить поведение по умолчанию, выполнив следующее:

AppDomain.CurrentDomain.SetData("DataDirectory", newpath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...