2013-08-21 2 views
1

Следуя инструкциям спортивного магазина в Pro Asp.Net MVC book, У меня есть два проекта в моем решении Asp.Net MVC4. Один SportsStore.WebUI и один SportsStore.Domain, который имеет свой класс продукта нижеМодель, поддерживающая контекст «EFDbContext», изменила ошибку

Я добавил необходимый атрибут Name в моем классе модели

//Product.cs class 
    [Required] 
    public string Name { get; set; } 
    //..more properties, not important as I get the same error for all - 
    because I added Required to all 

Когда я запускаю проект я получаю The model backing the 'EFDbContext' context has changed since the database was created. ошибку.

Я проверил на StackOverflow и MSDN

Решение 1: Не работает

Предлагаемое решение на MSDN было бежать Update-Database -Force. Это не работает, я получаю

.

«Не удалось загрузить сборку« SportsStore.WebUI ». (Если вы используете First First Migrations внутри Visual Studio, это может произойти, если проект startUp для вашего решения не ссылается на проект который содержит ваши миграции. Вы можете либо изменить проект startUp для своего решения, либо использовать параметр -StartUpProjectName.) «

Это странно, потому что A- я НЕ использую код сначала, а проект B-Domain работает ссылкой Проект WebUI

Решение 2: не работает

Затем я попытался Enable-Migrations в консоли PM и я получаю

No context type was found in the assembly 'SportsStore.WebUI'. 

Затем я попытался изменить проект запуска на SportsStore.Domain (который имеет свой класс продукта) - ничего, ту же ошибку

+0

Я не понимаю. Вы редактируете Product.cs, но вы не используете Code-First? – Pluc

+0

Нет. Я не использую код во-первых, вообще нет edmx. Просто строка подключения в Web.COnfig, класс DBContext, написанный вручную, и вышеописанный класс продукта :( –

+1

Код в книге вы сначала ссылаетесь на код IS, но он скрывает его, сначала создавая таблицы, когда код сначала переходит к Однако, это не связано с ошибкой. – Claies

ответ

1

В этом проблема на самом деле происходит потому, что вы не изменили цель для вашего вызова лесов. В консоли диспетчера пакетов, когда вы запускаете какие-либо команды, которые нацелены на объекты домена, выпадающее меню Default Project должно быть настроено для вашего проекта Domain. Если вы попытаетесь выполнить миграцию или обновления базы данных в своем веб-проекте, они потерпят неудачу.

Редактировать

Важно это строка ошибки

Если вы используете Code First Миграции в Visual Studio, это может произойти, если стартап проект для вашего решения не ссылается на проект, содержит ваши миграции.

ошибка указывает "Could not load assembly 'SportsStore.WebUI', что означает, что проект был перенесен, хотя они должны были войти в ваш проект домена.

+0

Спасибо. Было так же просто, как выбрать правильный проект из падать. Но когда вы не знаете, где искать, все невидимо. :) –

+0

Если вы не видите раскрывающийся список «Проект по умолчанию» в консоли диспетчера пакетов, несколько раздвиньте разделитель, пока он не появится. (Это не частично видно, и нет никакого намека на это вообще, если вы этого не сделаете: он становится видимым только при полном растяжении. Я просто теряю полчаса, пытаясь понять это раздражение). – Dean

1

У меня также была эта ошибка. У меня был существующий asp.net mvc с использованием EF 5.0, который работал нормально.

Затем я создал консольное приложение с EF 5.0, которое указывало на ту же базу данных. Приложение asp.net mvc начало бросать исключение для поддержки модели.

Я заметил, что там был новый стол с именем «_ MigrationHistory». Чтобы снова запустить приложение asp.net, я переименовал эту таблицу « _MigrationHistory_backup»