Строка подключения MVC Entity Framework ссылается на другой проект - PullRequest
0 голосов
/ 26 марта 2012

Я делаю первый подход к модели для приложения Microsoft MVC. Решение называется «TutorialPile», разделенное на два проекта, «Домен» и WebUI. Я пытаюсь добавить контроллер для объекта Tutorial в проект WebUI и выбираю класс домена и контекст БД. Однако я получаю сообщение об ошибке: «Не удается получить метаданные для TutorialPile.Tutorial. Невозможно загрузить указанный ресурс метаданных.»

При просмотре в Интернете кажется, что он не может найти объект edmx в строке подключения в файле web.config. Я скопировал строку подключения из файла app.config проекта домена, но он все еще не работает. Вот строки подключения из файла web.config.

<add name="ApplicationServices"         connectionString="data   source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
<add name="TutorialPileModelContainer"  connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
<add name="TutorialPileDbContext"       connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

А вот строка подключения, которую я скопировал.

<add name="TutorialPileDBEntities"      connectionString="metadata=res://*/TutorialPile.csdl|res://*/TutorialPile.ssdl|res://*/TutorialPile.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Есть идеи, что мне нужно изменить?

1 Ответ

0 голосов
/ 31 мая 2012

Убедитесь, что ...

  1. Действие сборки файла edmx установлено на EntityDeploy (выберите файл и перейдите в окно свойств).
  2. Ваш проект WebUI ссылается на проект домена
  3. Отредактируйте строку подключения в вашем проекте WebUI для ссылки на метаданные из другого проекта. Использование * означает, что он может прийти из любой библиотеки DLL. НО, если ваш файл edmx находится внутри папки, вы должны отобразить иерархию.

Например:
Путь к EDMX: TutorialPile.Domain / Model / TutorialPile.edmx
Строка подключения: res: //*/Model.TutorialPile.csdl | res: //*/Model.TutorialPile.ssdl | res: //*/Model.TutorialPile.msl

Еще лучше:

Документация предлагает указать сборку (по соображениям производительности), используя полное имя сборки (что-то вроде: AdventureWorks, 1.0.0.0, нейтральный, a14f3033def15840). Я не мог заставить это работать. Но использование только названия сборки работает для меня. Итак, если ваш доменный проект выводит TutotialPile.Domain.dll, вы можете использовать:

разрешение: //TutorialPile.Domain/Model.TutorialPile.csdl | Рез: //TutorialPile.Domain/Model.TutorialPile.ssdl | Рез: //TutorialPile.Domain/Model.TutorialPile.msl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...