Как мне обратиться к APP_Data из другого проекта - PullRequest
2 голосов
/ 19 декабря 2008

У меня есть следующее проектное решение:

  • Есть ASP.NET MVC Web Приложение, где у меня есть SQL база данных (файл mdf) в каталоге App_Data.

  • Есть библиотека классов, где я есть некоторые миграции из migratordotnet . В моем файле сборки я должны указать, где SQL база данных, чтобы он мог запустить Миграции.

На данный момент в проекте миграции я использую жестко закодированный путь для доступа к базе данных SQL в строке подключения. Это выглядит примерно так:

connectionString="Data Source=.\SQLExpress; Integrated Security=true; AttachDbFilename=C:\MySolution\MyMVCProject\App_Data\MyDatabase.mdf"

Это не то, что я хочу сделать. Я также не могу использовать относительные пути (например, ..\MyMVCPProject\AppData\MyDatabase.mdf, потому что классы SQL, используемые в migratordotnet, не смогут правильно его перевести). Но я хочу использовать какой-то замещающий путь к нему, вроде того, что вы найдете с |DataDirectory| в Web.Config в веб-проекте, например:

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;User Instance=True"

Как мне этого добиться? Я не могу использовать эту строку подключения в проекте миграции. Потому что |DataDirectory| перейдет в путь установки .NET Framework и найдет там файл базы данных.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2009

Вы хотите что-то вроде этого (код VB .NET):

connectionString="Data Source=.\SQLExpress; Integrated Security=true; AttachDbFilename=" & Server.MapPath("~\App_Data\MyDatabase.mdf")

Server.MapPath () превратит ваш относительный путь в полный путь во время выполнения.

2 голосов
/ 19 декабря 2008

Рассматривали ли вы просто постоянное подключение базы данных в SQL Express? Таким образом вы можете использовать одинаковые строки подключения в обоих проектах, и ни один из них не будет привязан к пути файловой системы.

...