Добавить controller в MVC4 не работает

Я использую VS 2010 Premium. У меня есть проект MVC4 с использованием SqlCe 4.0 с каркасной моделью сущности.

Модель:

public class ProjectBuild { public int ProjectBuildID {get;set;} public string name {get;set;} } public class ProjectBuildContext:DbContext { public DbSet builds {get;set;} } 

Ниже приведена строка подключения:

  add name="ProjectBuildContext" connectionString="Data Source=|DataDirectory|DB.sdf" providerName="System.Data.SqlServerCe.4.0" 

Когда я пытаюсь создать новый controller со встроенными лесами, я получаю следующую ошибку:

«Невозможно получить метаданные для ProjectBuild». «Использование одного и того же DbCompiledModel для создания контекстов для разных типов серверов баз данных не поддерживается. Вместо этого создайте отдельный DbCompiledModel для каждого используемого типа сервера.

Я попробовал решение Fontanka16, но это не сработало, оказалось, что у моего classа DbContext отсутствует его конструктор по умолчанию, определяющий целевую базу данных CE.

Это мои краткие сводки:

  • Установлен пакет Nuget EntityFramework.SqlServerCompact.
  • Добавлен конструктор по умолчанию для моего classа DbContext.

    public class SchoolContext: DbContext {public SchoolContext (): base (” School “) {} …}

  • Моя строка подключения:

      

Тогда это сработало.

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

Я новичок в использовании EF и MVC, но я обнаружил, что если вы не определяете подключение к данным (закомментируйте это) или переименуйте его в web.config, Visual Studio позволит вам добавить controller. Если соединение не определено, EF автоматически будет использовать SQLExpress. После добавления controllerа вы можете добавить строку подключения обратно в web.config, и программа будет функционировать должным образом.

// это решение является выдержкой из http://forums.asp.net/t/1838396.aspx/1?Error+while+adding+controller+class+Unable+to+retrieve+metadata+for+MvcMovie+Models+ Фильм +

Вы всегда должны инициализировать суперclass с base(string) . Также выясняется, что имя connectionString в Web.config может быть не таким, как строка, которую вы отправляете суперкомпьютеру.

Так, например:

  public class MovieDBContext : DbContext { public MovieDBContext() : base("Movie") { } } 

Итак, вы видите, что "MovidDBContect" отличается от "Movie" .

  1. Создание controllerа
  2. Добавить контекст строки в web.config

Это хронологическая проблема, а не ошибка. Источник: из комм. Vô Thường http://www.itorian.com/2012/10/unable-to-retrieve-metadata-for.html

Заметьте, если это поможет кому угодно. У меня была эта проблема.

Это исправлено: 1. Комментирование строки подключения 2. Перестройте веб-сайт без строки подключения 3. Добавьте controller 4. Раскомментируйте строку подключения 5. Перестройте веб-сайт

Все работает отлично.

У меня возникла эта проблема при добавлении controllerа API 2.0 / MVC5 с Entity Framework 6 и базы данных MySQL.

 [DbConfigurationType(typeof(MySqlEFConfiguration))] 

Прокомментируйте этот атрибут classа. Построить проект. Затем добавление controllerа работает для меня на MySql.

Раскомментирование после добавления controllerа и продолжения, как обычно.

Это будет выглядеть как самая тупая вещь, но есть ли у вас соединение с вашей базой данных в другом месте? Я столкнулся с этой же самой точной проблемой. Я открыл базу данных в представлении «Проводник сервера» (я установил соединение с моим SDF-файлом). Как только я закрыл эту связь, все сработало отлично.

Хорошо, это мое злое решение проблемы. Я, наконец, заработал. Win8 VS2012 EF5 MVC4

  • Убедитесь, что установлен пакет Nuget EntityFramework.SqlServerCompact
  • Во-первых, не добавляйте DbContext вручную. Вместо этого используйте меню из леса
  • Когда вы создали один Controller + Views с помощью строительных лесов, вернитесь к своей старой строке соединения в файле web.config, используя SQL CE 4.0. Тогда все работает отлично для меня

Я чувствую, что это связано, но я использовал решение выше, чтобы устранить проблему и позволить мне снова создавать controllerы. Проблема, которая возникла после этого, заключалась в том, что я не мог найти свою базу данных SQL Compact после этого в проводнике сервера. Кажется, он работал, когда я добавил приложение, но я не смог его найти. Как только я удаляю конструктор: public class SchoolContext: DbContext {public SchoolContext (): base (“School”) {}.

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

Если вы используете VS 2012, вам также нужно будет указать EF использовать SQL Compact вместо localDb.

       

Более простой способ – установить пакет EF SQL Compact Nuget .

Для получения дополнительной информации ознакомьтесь с этой записью в блоге .

  • Самый быстрый способ вычисления 128-битного целого по модулю 64-разрядного целого числа
  • Как проверить блокировку файлов?
  • Как удалить папку на C ++?
  • Каково использование статических конструкторов?
  • Как я могу инициализировать переменные-члены объекта C ++ в конструкторе?
  • Расшифровка сообщений об ошибках шаблона C ++
  • Элемент ViewData с ключом «XXX» имеет тип «System.Int32», но должен иметь тип «IEnumerable »,
  • WaitAll для нескольких дескрипторов в streamе STA не поддерживается
  • Как избежать знака% (процента) в printf C?
  • Псевдонимы T * с char * разрешены. Разрешено ли это другим способом?
  • Как пользователь может изменять размер управления во время выполнения в winforms
  • Давайте будем гением компьютера.