Невозможно загрузить указанный источник метаданных при использовании EntityDataSource - Entity Framework - PullRequest
1 голос
/ 09 февраля 2012

Мой MyModel.edmx находится в сборке DataAccess.dll.Ссылка на эту сборку есть в моем веб-проекте (C #)

Моя строка подключения к объекту - проблема.

Это то, что я скопировал из app.config в мой win.config:

<add name="MyModelEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

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

Я уверен, что имя моей модели указано правильно.Я проверил dll с помощью Reflector.

Итак, я думаю, что мне следует включить мою dll в строку подключения, и я попытался это

<add name="MyModelEntities" connectionString="metadata=res://DataAccess.dll/MyModel.csdl|res://DataAccess.dll/MyModel.ssdl|res://DataAccess.dll/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Но я получаю ошибку, что DataAccess.dll нельзя найти в списке перечислений сборок .

Можно ли как-то ссылаться на мою модель внутри dll напрямую. И моя dll не называется dll.

Любая помощь приветствуется.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 октября 2017

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

Я столкнулся с той же проблемой, и после прочтения комментария JimMat по первоначальному вопросу и изрядного количества проб и ошибок я узнал, что Entity требовательна к своим квалифицированным именам в строке метаданных.

Убедитесь, что Обработка артефактов метаданных (как упомянуто bluesky) установлено в Вставить в выходную сборку , так как это запечет файлы csdl / ssdl / msl в dll для эта сборка, и будет скопирована в каталог bin ссылочного проекта. Перестройте решение.

  • res: // - говорит Entity искать во встроенных ресурсах проекта, а не путь к файлу на диске
  • ... // * / ... - используется WildCard для имени сборки
  • ... / Namespace.Of.MyModel.csdl - Полное имя ресурса, без имени сборки .

Пример. Если мой DbContext находится в проекте / сборке с именем «Данные» с полностью определенным именем «Data.Staging.Context», мои метаданные будут выглядеть примерно так:

metadata=res://*/Staging.Context.csdl|res://*/Staging.Context.ssdl|...

Или, согласно JimMat:

metadata=res://Data/Staging.Context.csdl|res://Data/Staging.Context.ssdl|...
0 голосов
/ 01 апреля 2014

У меня был такой же опыт, как у bobetko, воссоздание проектов и баз данных с Entity Framework 5 и некоторое время заставляло его работать. (VS 2013 Express и SQL Server 2008 R2)

Затем я сделал это, и это исправило все мои проблемы ...

Чтобы скопировать файлы модели и сопоставления в выходной каталог

  1. Дважды щелкните файл .edmx в обозревателе решений.
  2. Файл открывается в Entity Designer.
  3. Щелкните правой кнопкой мыши пустой участок области дизайна и выберите Свойства.
  4. Откроется окно свойств Visual Studio.
  5. Установите для свойства обработки артефактов метаданных значение Копировать. в выходной каталог.

http://msdn.microsoft.com/en-us/library/vstudio/cc716709(v=vs.100).aspx

Я думаю, что VS путается из-за нескольких проектов в решении с несколькими подключениями к одной и той же базе данных. Вышеуказанное исправление решило это для меня и восстановило мои поврежденные проекты.

...