Почему DataDirectory не изменяется во время выполнения

Я пытаюсь подключиться к локальной базе данных с помощью приложения w winform С#, когда я устанавливаю строку подключения в Data: Source=C:\Users\PACKARD BELL\documents\visual studio 2010\Projects\GestionStock\MyApp\Mydb.sdf
, она работает нормально, но когда я устанавливаю ее в Data Source=|DataDirectory|\Mydb.sdf, это не работает, я пытался напечатать строку подключения с помощью переменная каталога данных в консоли, и я обнаружил, что она не меняется

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

Как я могу это сделать? заранее спасибо


person user3336078    schedule 21.09.2014    source источник
comment
разве это не каталог %data% или что-то в этом роде?   -  person Noctis    schedule 22.09.2014
comment
Да это |DataDirectory| но это не меняется   -  person user3336078    schedule 22.09.2014


Ответы (3)


Согласно MSDN:

|DataDirectory|: это значение, которое устанавливается с помощью метода AppDomain.SetData("DataDirectory", objValue). Приложение ASP.NET разрешает |DataDirectory| в папку /app_data.

По сути, если вы используете значение |DataDirectory|, ваша база данных должна существовать в каталоге App_Data\ вашего проекта. Вы можете изменить значение по умолчанию, но на практике это только сбивает с толку других разработчиков, которые могут ожидать поведения по умолчанию.

Итак, вместо

Source=C:\Users\PACKARD BELL\documents\visual studio 2010/Projects\GestionStock\MyApp\Mydb.sdf,

это было бы

Source=C:\Users\PACKARD BELL\documents\visual studio 2010\Projects\GestionStock\MyApp\App_Data\Mydb.sdf

person Claies    schedule 21.09.2014
comment
Я поместил свой файл sdf в каталог App_Data, но он все равно не работает. - person user3336078; 22.09.2014

А вот файл sdf в папке App_Data

person Aladin Hdabe    schedule 21.09.2014
comment
как я могу использовать его, пожалуйста? - person user3336078; 22.09.2014
comment
Просто создайте папку с именем App_data в своем проекте или вы можете выбрать ее из меню пространственных папок, щелкнув проект правой кнопкой мыши в обозревателе решений. - person Aladin Hdabe; 22.09.2014

Вот выдержка из статьи, которую я написал:

// What's the name of the file you want to work with
var file_name = "parse_me.txt";

// Let's assume you're working with the file on your desktop
var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

// This is needed to "paste" the dir and the file name (it'll add the "\" basically).
var file_location = Path.Combine(path,file_name);

// Now you can do:
string[] read_all_lines = System.IO.File.ReadAllLines(file_location);

Предполагая, что у вас есть файл, он должен работать.

person Noctis    schedule 21.09.2014