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

MVC "Добавить контроллер" - "Не удается получить метаданные... Конфигурация системы не удалось инициализировать"

С нуля я сделал новое решение с двумя проектами: один был MVC 3, а другой - поддерживающим EF 4.2 проектом. Все это строится успешно. Из проекта MVC я открываю диалог "Добавить контроллер" и генерирую код на основе контекста и модели, которые я выбираю из поддерживающего проекта EF. Диалог "добавить контроллер" завершается с сообщением:

Невозможно получить метаданные для "MyModelClass". Не удалось инициализировать систему конфигурации.

Я заметил, что диалог "добавить контроллер" на самом деле пытается получить строку подключения к базе данных из файла web.config. Во-первых, это выглядит как goofy-ish, так как в поддерживающем проекте EF уже есть app.config с строкой соединения. Но, не обращая внимания на это, самое лучшее, что я могу понять, это то, что строка подключения в web.config плохая. Это выглядит так:

<add name="Monsters2Entities" 

    connectionString="
      metadata=res://*/Monsters.csdl|
               res://*/Monsters.ssdl|
               res://*/Monsters.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;
        data source=.;
        initial catalog=Monsters2;
        integrated security=True;
        pooling=False;
        multipleactiveresultsets=True;
        App=EntityFramework
      &quot;" 
      providerName="System.Data.EntityClient" 
/>

В строке подключения фактически нет всех смешных разрывов строк и отступов - я просто пытаюсь сделать его более легким для чтения. Во всяком случае, эта строка соединения в основном идентична строке соединения, используемой в поддерживающем проекте EF, на котором он моделируется. Как мне исправить ситуацию, чтобы сделать "add controller" dialgoue счастливым?

4b9b3361

Ответ 1

Я установил EF 6, который добавил:

<providers>
    <provider invariantName="System.Data.SqlClient" 
        type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

В моем файле конфигурации. У меня были другие проблемы с лесами, поэтому я решил вернуться к Ef 5. После удаления EF 6 и переустановки EF 5 я удалил из конфига, а затем смог построить мой новый контроллер. Я обнаружил это с помощью

PM> Update-Database –Verbose

Ответ 2

Просто скопируйте информацию о строках соединения из проекта EF model App.Config в свой файл и посмотрите, что вы не повторяете никаких разделов (например, раздел entityFramework)

        

Ответ 3

Попробуйте следующее:

<add name="Monsters2Entities" 

    connectionString="
      metadata=res://*/Monsters.csdl|
               res://*/Monsters.ssdl|
               res://*/Monsters.msl;
      provider=System.Data.SqlClient;
      provider connection string='
        data source=.;
        initial catalog=Monsters2;
        integrated security=True;
        pooling=False;
        multipleactiveresultsets=True;
        App=EntityFramework
      '" 
      providerName="System.Data.EntityClient" 
/>

Я заменил &quot; на '

Ответ 4

Я добавил это в свой файл Global.Asax, чтобы: a) база данных была немедленно запущена и b) добавлено определение таблицы. позволяя контроллеру найти определение таблицы:

 System.Data.Entity.Database.SetInitializer<ProjectName.DAL.DBConnectContextName>(new CreateDatabaseIfNotExists<ProjectName.DAL.DBConnectContextName>());

Ответ 5

Я нашел, что помог, когда у меня возникла эта проблема:

Удалена предварительная версия EF и установлена ​​EF5 Пошел в Sql Server Object Explorer и удалил db. Восстановлено решение используемый PM > Обновление-База данных -Вербоза

Возможно, проблема заключалась в предварительном выпуске EF или просто очищении неба.

Я совершенно новый для всех, но это позволило мне использовать инструмент Add Controller scaffolding с помощью "MVC-контроллера с проверкой и записью действий и обзоров с использованием шаблона Entity Framework".

Ответ 6

Прежде всего, вы должны проверить, что ваша строка подключения должна находиться в вашем файле Web.Config в ROOT! вашего проекта после этой проверки, если есть другая строка подключения или нет, если есть другая строка подключения, замените ее на строку подключения. Это решило мою проблему, которая была такой же, как у вас....

Ответ 7

Мне удалось решить мою проблему, изменив стратегию генерации кода edmx на T4, добавив контекст Eb5 Db и заменив% edmxInputFile% в файлах *.tt и *.Context.tt.

Ответ 8

Переименуйте класс Model - работал у меня

Ответ 9

У вас есть файл ConnectionString в вашем файле Web.Config, прежде чем создавать контроллер? Иногда мы создаем другой проект, содержащий Контекст сущности Entity, и мы забыли добавить эту же connectionString в Web.Config внутри другого проекта.

<connectionStrings>
    <add name="Monsters2Entities" ...  />
</connectionStrings>

Ответ 10

Я сталкиваюсь с этой проблемой "Невозможно получить метаданные...", пока я не использовал контроллер. Решение для этого следующее.

  • В приложении Connection String change to "system.data.sqlclient" 2.или Удалить строку подключения из Web.config и добавить контроллер и после добавления контроллера снова добавить строку соединения.

Кажется, это ошибка в MVC. Надеюсь, с этим вы сможете продолжить.

Ответ 11

сначала нужно установить инфраструктуру сущности пакета

перейти к инструменту > Диспетчер пакетов Libray > консоль менеджера pakage > : установить структуру сущности