Entity Framework 4.1 Отключить проверку совместимости модели

Мне нужно использовать класс «DropCreateDatabaseIfModelChanges» — Initializer, потому что я хочу создать один специальный объект (таблицу), если он не существует. Моя проблема в том, что у меня также есть другой объект в моем DbContext, который не должен быть частью проверки совместимости модели.

Я получаю следующее сообщение об ошибке:

Model compatibility cannot be checked because the EdmMetadata type was not inclu
ded in the model. Ensure that IncludeMetadataConvention has been added to the Db
ModelBuilder conventions.

Есть ли возможность исключить особую сущность из этой проверки?

EDIT: я сделал то, что предложил Деварт. Проблема кажется иной, чем я сначала думал. Все работает нормально, если я позволю EF создать новую базу данных с моим CheckedContext. Но я получаю сообщение об ошибке выше, когда я пытаюсь использовать свой NonCheckedContext, который должен использовать существующую таблицу...

EDIT2: Это рабочее решение. Все работает нормально, когда базы данных раньше не существовало. Но у меня нет возможности удалить/создать базу данных.


person 0xbadf00d    schedule 23.05.2011    source источник


Ответы (1)


Возможное решение: создайте класс контекста, унаследованный от DbContext, а затем создайте два отдельных подконтекста, унаследованных от базового — CheckedContext и NonCheckedContext, и соответствующим образом задайте стратегию инициализации базы данных.
Обратите внимание, что вы должны сначала получить доступ к CheckedContext, чтобы он запускает все свои проверки.

person Devart    schedule 23.05.2011
comment
Это не сработает. Я не могу создать класс-оболочку, производный от DbContext без какого-либо DbSet‹› в нем. Это приводит к исключению при выполнении конструктора базового класса (DbContext). Я мог бы создать два отдельных класса DbContext, но это не решение. - person 0xbadf00d; 23.05.2011
comment
Извините, проблема была не в этом. Я обновил свой первоначальный пост. - person 0xbadf00d; 23.05.2011