Как правильно установить DataDirectory в строке подключения веб-проекта? - PullRequest
4 голосов
/ 13 июля 2011

Мое решение имеет проект класса lib с базой данных (мой DAL) и веб-проект, который будет выступать в качестве слоя службы WCF.

Я добавляю ссылку на проект DAL из веб-проекта, и при компиляции моя база данных копируется в папку Bin веб-проекта.

Файл Web.config нуждается в строке подключения. Если я использую:

attachdbfilename=|DataDirectory|\Test.mdf

ищет БД в папке App_Data.

Я могу легко поместить копию БД в папку App_Data, однако на этом этапе разработки я часто делаю изменения в схеме (через копию в DAL) и хотел бы, чтобы проект забрал версия скопирована в папку bin слоев WCF.

Я знаю, что могу изменить DataDirecty по умолчанию следующим образом:

AppDomain.CurrentDomain.SetData("DataDirectory", path);

А) Если не использовать жестко заданный абсолютный путь, есть ли лучший способ получить строку подключения для использования папки bin?

B) Если я изменю настройку DataDirectory по умолчанию, как программно получить абсолютную ссылку на папку bin?

<Rant> Разве Visual Studio 2010 не должна была быть достаточно умной, чтобы реализовывать типы проектов, и вместо того, чтобы вытягивать БД из указанной сборки в папку bin, вместо этого использовать папку App_Data? </Rant>

1 Ответ

1 голос
/ 15 июля 2011

В вашем веб-проекте вы сможете найти путь, выполнив:

string path = Server.MapPath("~/bin/Test.mdf");

Затем вы можете установить путь в Application_Start в вашем Global.ascx.cs

AppDomain.CurrentDomain.SetData("DataDirectory", path);

Я понимаю, что это отвечает на часть B вашего вопроса, но не на часть A.

...