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

ADO.NET | DataDirectory | где это документировано?

В AppConfig можно использовать |DataDirectory|, но я не могу найти какой-либо документ?

4b9b3361

Ответ 1

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

Итак, вместо:

SqlConnection c = new SqlConnection (
   @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");

вы делаете следующее:

// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");

// SQL Connection String with |DataDirectory| substitution string
SqlConnection c = new SqlConnection (
   @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");

Ответ 2

В социальных форумах MSDN этот ответ можно найти

| DataDirectory | (заключенный в символы трубы) является строкой подстановки, которая указывает путь к базе данных. Это устраняет необходимость жесткого кодирования полного пути, что приводит к нескольким проблемам, поскольку полный путь к базе данных может быть сериализован в разных местах. DataDirectory также упрощает совместное использование проекта, а также развертывание приложения.

Например, вместо следующей строки подключения:

"Data Source= c:\program files\MyApp\Mydb.sdf"

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

"Data Source = |DataDirectory|\Mydb.sdf"

Чтобы установить свойство DataDirectory, вызовите метод AppDomain.SetData. Если вы не установите свойство DataDirectory, для доступа к папке базы данных будут применяться следующие правила по умолчанию:

  • Для приложений, помещенных в папку на пользовательском компьютере, папка базы данных использует папку приложения.
  • Для приложений, работающих под ClickOnce, папка базы данных использует созданную папку данных.

Ответ 3

Неверные парни! | DataDirectory | ссылается на каталог mssql\data, для которого настроен ваш экземпляр.

Так, например, я использую несовпадение Visual Studio 2012 с SQL Express. | DataDirectory | помещает все файлы MDF в папку C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA, где мой SQL-Express был установлен не в моей папке app_data.

Также файл представляет собой имена MVCMovie.Models.MovieDBContext not Movies.mdf, как указано в моем web.config.

Я думаю, что он должен быть сконфигурирован где-то в visual studio, чтобы он был помещен соответствующим образом в app_data.

Ответ 4

Существует внутренний класс SqlConnectionHelper, который анализирует его и при необходимости создает MDF.

Здесь единственный MS doc, который я могу найти об этом классе и | DataDirectory | macro: http://msdn.microsoft.com/en-us/library/aa478948.aspx.

Ответ 6

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

При использовании VisualStudio 2013 (по крайней мере) при выполнении команды "Обновление-База данных" каталог данных относится к "Начальному проекту", который в настоящее время настроен в визуальной студии.

Даже если вы запустите базу данных обновлений в другом проекте (как указано в консоли диспетчера пакетов), она создаст вашу базу данных в App_Data выбранного в данный момент проекта запуска.