2012-05-16 3 views
38

Я работаю с EF 4.3 и имею контекст, которому нужно поговорить с базой данных, которая была сгенерирована другой библиотекой с использованием EF Code First 4.3. Контекст выдает исключение, указывающееКак отключить проверку совместимости моделей в Entity Framework 4.3?

Модель, поддерживающая контекст контекста, изменилась с момента создания базы данных . Рассмотрим с помощью Code First Миграции обновить к базе данных

В EF 4.1 это может быть diabled удалением IncludeMetadataConvention из ModelBuilder. Однако в 4.3 эта конвенция устарела и больше не действует.

Как я могу связать контекст EF 4.3 с созданной EF 4.3 сгенерированной базой данных , построенный в другом контексте? Единственный вариант, который я нашел (далекий от идеала), - это удалить таблицу метаданных, тем самым вызвав как контексты, чтобы предположить, что база данных не была создана EF.

PS: Я знаю, что этот сценарий, скорее всего, возникают вопросы о том, почему мне нужно сделать это; Я знаю, что это далеко не идеально, но будьте уверены, что это проблема, которую мне нужно решить, и у вас ограниченные возможности работать с боковым.

ответ

67

Установка инициализатора на null пропустит проверку совместимости модели.

Database.SetInitializer<MyContext>(null); 
+2

Отлично, работает точно так, как я надеялся. Благодаря! – STW

+1

Куда вы это положили? – jep

+4

Статический конструктор в вашем контексте, по-видимому, подходит для большинства приложений. – bricelam

15

Для EF 4.3 или выше

Database.SetInitializer<MLTServerWatcherContext>(null); 

Или, если используется более ранняя версия EF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 

(я знаю, что он сказал, что он используется EF 4.3, но я думаю, что это хорошо показать эту опцию тоже)

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

  • Нет связанных вопросов^_^