EF 4.3 CodeFirst MVC3 WebApp и консоль используют одну и ту же модель, но каким-то образом они «видят» другую модель, что приводит к ошибке поддержки модели - PullRequest
4 голосов
/ 20 февраля 2012

Я использую одну и ту же модель для нескольких приложений: веб-приложения MVC3, служб Windows и консольного приложения. Когда я запускаю веб-приложение MVC3, оно создает базу данных. Я могу перезагрузить его, и все в порядке. Но когда я запускаю консольное приложение, я получаю сообщение об ошибке:

Модель, поддерживающая контекст "... Context", изменилась с База данных была создана. Рассмотрите возможность использования Code First Migrations для обновления база данных (http://go.microsoft.com/fwlink/?LinkId=238269).

То же самое происходит, когда я удаляю базу данных, запускаю консольное приложение, я могу перезапустить это, и все тоже хорошо. Когда я запускаю веб-приложение MVC. Сбой: модель поддержки ... и т. Д.

В EF4.1 удаление таблицы EdmMeta «решило» проблему. Но поскольку в EF4.3 такой таблицы больше нет, я не могу это исправить. Я проверил, что все приложения относятся к той же модели DLL. Я дважды проверил, что все проекты ссылаются на EF4.3, так что это не является причиной проблемы.

Буду признателен за любую конструктивную помощь.

С уважением, Эрвин ван Дейк.

1 Ответ

12 голосов
/ 20 февраля 2012

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

Database.SetInitializer<YourContext>(null);

Также добавьте это к вашему OnModelCreating в вашем производном DbContext:

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

Это должно избежать проблем с вычислением хеша.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...