2011-05-23 7 views
0

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

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

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 Wich должны использовать существующую таблицу ...

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

ответ

1

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

+0

Это не сработает. Я не могу создать класс оболочки, полученный из DbContext, без DbSet <> в нем. Это приводит к исключению при выполнении конструктора базовых класов (DbContext). Я мог бы создать два отдельных класса DbContext, но это не может быть решением. – 0xbadf00d

+0

Прошу прощения, это не проблема. Я обновил свой первоначальный пост. – 0xbadf00d

Смежные вопросы