ссылка на EDMX в проекте MVC - PullRequest
1 голос
/ 19 июля 2011

У меня есть строка подключения EF в проекте MVC, например:

ConnectionString = "метаданные = разрешение: ///Models.db.csdl | разрешение: ///Models.db.ssdl | разрешение: //*/Models.db.msl; поставщик = System.Data.SqlClient; строка подключения провайдера = "Источник данных = localhost; Начальный каталог = SystemName; Интегрированная безопасность = True; MultipleActiveResultSets = True" "providerName =" System.Data.EntityClient "

Все хорошо, пока я не добавил второй проект и не обратился к проекту MVC, который содержит edmx, но во время выполнения я получаю:

Указанный путь метаданных недействителен. Допустимый путь должен быть либо существующим каталогом, либо существующим файлом с расширением «.csdl», «.ssdl» или «.msl», либо URI, который идентифицирует встроенный ресурс.

Я читал пост за постом, но не могу понять, как правильно ссылаться на метаданные в проекте MVC. Может ли кто-нибудь указать мне правильное направление? Я не хочу создавать строку подключения, которая настолько специфична, что разрывается во время развертывания и отладки.

1 Ответ

2 голосов
/ 19 июля 2011

Формат для ресурсов:

Metadata=res://<assemblyFullName>/<resourceName>. 

Ленивый способ - использовать подстановочный знак res: //*/bah.msl.Который будет загружать файлы модели / отображения из каталога bin, вызывающей сборки, а также из ссылочных сборок.

В вашем случае:

res:///Models.db.csdl|res:///Models.db.ssdl|res://*/Models.db.msl

Неверно, попробуйте:

res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl

Полная строка:

connectionString="metadata=res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=SystemName;Integrated Security=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient"

В качестве альтернативы выможно использовать абсолютные ссылки, что быстрее (но я предполагаю, что это будет гораздо более болезненным для вас):

Metadata=res://<DLL>, <Version>, neutral, <SN>/Models.db.csdl|Models.db.ssdl|Models.db.msl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...