Контроллер скаффолдинга в MVC 4, решение ошибки: «Ошибка: невозможно получить метаданные для« модели ». Аргумент« строка подключения »не может быть нулевым

При попытке создать контроллер в MVC 4 с помощью Scaffolding (EF и CRUD) я получил следующую ошибку:

«Невозможно получить метаданные для MyModel. Аргумент «connectionString» не может быть нулевым, пустым или содержать только пробелы».

Я потратил довольно много времени, пытаясь понять это, но безуспешно из всех сообщений, которые я нашел в Интернете. Однако я нашел способ решить эту проблему, и хотя я поделюсь им здесь.

Мое решение:

  1. Прокомментируйте весь текущий класс Context для вашей модели, если он у вас есть.
  2. Удалите любые другие строки подключения для объекта, на который вы нацеливаетесь, если вы пытались решить проблему, добавив строку подключения, как это сделал я...
  3. Теперь добавьте контроллер с помощью диалогового окна "Добавить": Щелкните правой кнопкой мыши папку "Контроллеры" и перейдите к "Добавить->Контроллер...", укажите имя контроллера и выберите класс модели для использования. В классе контекста данных выберите «Новый контекст данных..». Последняя часть важна, так как скаффолдер теперь создаст для вас полностью функциональную строку подключения и класс контекста!
  4. Если у вас уже было много работы в предыдущем классе Context, используйте новый в качестве шаблона и скопируйте и вставьте старый в только что созданный.
  5. Затем удалите созданный контроллер и представления и добавьте еще один контроллер, используя диалоговое окно добавления, как на шаге 3, но на этот раз с классом контекста данных, созданным для вас ранее.
  6. Могут быть некоторые ошибки, связанные с автоматическими соглашениями об именах, но их довольно просто исправить.

Для справки, я работаю в Visual Studio 2012.

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


person Tormod Haugene    schedule 16.07.2013    source источник


Ответы (1)


В моем случае я просто удаляю строку ниже из моего класса Context

Database.SetInitializer(new MigrateDatabaseToLatestVersion<ContextClass, Configuration>());

После этого создайте и щелкните правой кнопкой мыши папку con Controller, чтобы добавить новый контроллер. Сделанный

person Elder Santos    schedule 26.09.2013
comment
Привет! У меня никогда не было времени попробовать это, к сожалению. :) - person Tormod Haugene; 16.01.2016