ADO.NET |параметр datadirectory|, где это задокументировано?


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

6 59

6 ответов:

|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");

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

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

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

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

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

“Data Source = |DataDirectory|\Mydb.sdf”

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

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

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

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

также файл имеет имена MVCMovie.Модели.MovieDBContext не фильмы.МДФ, как указано в моем сеть.конфиг.

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

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

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

http://msdn.microsoft.com/en-us/library/aa478948.aspx

часть| DataDirectory / строки подключения указывает, что файл MDF находится в каталоге App_Data.

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

с VisualStudio 2013 (по крайней мере) при запуске команды Update-Database каталог данных является относительным из "Startup Project", настроенного в настоящее время в visual studio.

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