Добавить 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;} }
Ниже приведена строка подключения:
- Тестирование указателей на достоверность (C / C ++)
- Поставщик несовместим с версией клиента Oracle
- Использование рефлекса C # для вызова конструктора
- Зачем использовать указатели?
- Сортировка ObservableCollection C #
add name="ProjectBuildContext" connectionString="Data Source=|DataDirectory|DB.sdf" providerName="System.Data.SqlServerCe.4.0"
Когда я пытаюсь создать новый controller со встроенными лесами, я получаю следующую ошибку:
«Невозможно получить метаданные для ProjectBuild». «Использование одного и того же DbCompiledModel для создания контекстов для разных типов серверов баз данных не поддерживается. Вместо этого создайте отдельный DbCompiledModel для каждого используемого типа сервера.
- Как перезапустить приложение C # WinForm?
- Есть ли разница между «броском» и «броском»?
- C ++: long long int vs. long int vs. int64_t
- Отключить ошибки затмения (которые на самом деле не являются ошибками)
- Как заставить статический член инициализироваться?
- Является ли глобальная память инициализирована на C ++?
- Бесплатный инструмент для проверки исходного кода C / C ++ на основе набора стандартов кодирования?
- Некоторые помогают понять «доходность»,
Я попробовал решение 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"
.
- Создание controllerа
- Добавить контекст строки в 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 .
Для получения дополнительной информации ознакомьтесь с этой записью в блоге .