Подтвердить что ты не робот

Не удалось загрузить указанный ресурс метаданных

У меня возникают серьезные проблемы с Entity Framework, и я не могу понять, что происходит.

Я пробовал много вариантов: MetadataException: Не удалось загрузить указанный ресурс метаданных и знаменитую запись блога Craig Stuntz, расположенную по адресу: http://blogs.teamb.com/craigstuntz/2010/08/13/38628/

У меня есть 3 проекта для краткости:

Funscribe.Data(файл EDMX, расположенный здесь)

Funscribe.Console(консольное приложение)

Funscribe.Web(приложение MVC 3)

Первоначально это было просто приложение MVC, и я недавно добавил этот новый консольный проект.

Я скопировал строку подключения из web.config и применил ее к моему app.config:

<add name="FundirectoryEntities" connectionString="metadata=res://*/Fundirectory.csdl|res://*/Fundirectory.ssdl|res://*/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Мое приложение mvc продолжает работать, но когда я запускаю консольное приложение, я получаю страшное:

"Невозможно загрузить указанный ресурс метаданных.

Я попытался изменить строку подключения на настройку wild card:

<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Получаю: Указанное имя EntityContainer по умолчанию "FundirectoryEntities" не удалось найти в информации сопоставления и метаданных.

Я попытался изменить его, чтобы указать сборку:

<add name="FundirectoryEntities" connectionString="metadata=res://Funscribe.Data.dll/Fundirectory.csdl|res://Funscribe.Data.dll/Fundirectory.ssdl|res://Funscribe.Data.dll/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Получаю: Невозможно разрешить сборку "Funscribe.Data.dll".

Я потерялся от того, что я должен делать здесь. Я просто обновил этот проект до Visual Studio 2012 (я представляю это новое консольное приложение после преобразования в VS 2012).

Я также заметил, что файл Funscribe.Data.dll находится в папке bin bin проекта, я вручную удалил эти файлы и наблюдал, как они воссозданы. И что меня озадачивает, веб-приложение продолжает работать правильно!

Все проекты находятся на .NET 4.0. Консольное приложение использует .NET 4.0, а не проверку профиля клиента.

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

4b9b3361

Ответ 1

Параметр метаданных для приложения с моделью Entity Framework с именем Model.edmx в сборке Simple Mvc.Data.dll может выглядеть так:

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=
            res://Simple Mvc.Data.dll/Model.csdl|
            res://Simple Mvc.Data.dll/Model.ssdl|
            res://Simple Mvc.Data.dll/Model.msl;provider= <!-- ... -->

Итак, вы можете увидеть, что есть одна ссылка для каждой из трех частей EDMX, которые нам нужны во время выполнения. Все они работают одинаково, поэтому давайте рассмотрим только первое более тесно. Ссылка CSDL выглядит следующим образом:

        res://Simple Mvc.Data.dll/Model.csdl

Указывает три вещи:

  • Загрузили CSDL из ресурса. Это "res://" part.

  • Название сборки, содержащей ресурс, "Simple Mvc.Data.dll". Если ваша сборка имеет сильное имя, вы можете указать здесь сильное имя во всей своей многословной славе.

  • Имя самого ресурса "Model.csdl". Не путайте это с EDMX или именем модели. В этом случае они оказываются одинаковыми, за исключением расширения, но это не всегда верно!

Вероятно, это сработает, если ваши ресурсы не будут иметь одинаковые имя как ваша модель, или если сборка не загружается.

Для получения дополнительной информации проверьте это Устранение неполадок строк подключения Entity Framework

Надеюсь, это поможет вам.

Ответ 2

В моем случае connectionString пытается найти файлы ресурсов, но не может. Что я сделал для решения моей проблемы:

Диаграмма EDMX правой кнопкой мыши → Перейти к свойствам → Соединение → Обработка артефактов метаданных → Затем измените на Копировать в каталог вывода и перестройте.

Это приведет к изменению пути пути к точке подключения метаданных к ресурсам, которые он пытается найти.

Ответ 3

MetadataException: невозможно загрузить указанный ресурс метаданных

Это означает, что приложение не может загрузить EDMX.

Есть несколько вещей, которые могут вызвать это, но, скорее всего, из-за неправильной строки подключения.

Возможные решения:

1. Проверьте строку подключения 2.Refresh model.edmx 3.Выберите опцию "Обновить модель из базы данных" в файле model.edmx

http://mvc4asp.blogspot.in/

Ответ 4

в моем случае, я удаляю свой файл EDMX в проекте и создаю его снова с новым именем, например. прежде чем он был Home_Model, позже это Home_Cost. когда я пытаюсь вызвать приведенный ниже код, он имеет "Невозможно загрузить указанный ресурс метаданных". ошибка. /////

    using (var currentEntities = new masterEntities())
    {
        currentUser = currentEntities.Home_User.FirstOrDefault(
            x => x.UserLoginAccount == userLoginAccount && x.UserPwd == userPwd);

    }

//// поэтому в Web.config я изменяю метаданных от Home_Model до Home_Cost.

тогда он работает. очевидно, VS2015 (моя версия) не обновлял web.config, когда я удаляю/создаю edmx.

Ответ 5

Восстановление в Visual Studio помогло мне.

Это на Build → Rebuild