Как отключить проверку совместимости моделей в Entity Framework 4.3?
Я работаю с EF 4.3 и имею контекст, который должен разговаривать с базой данных, которая была сгенерирована другой библиотекой, используя код EF First 4.3. Контекст выдает исключение с указанием
модель, поддерживающая контекст 'Context', изменилась с момента создана база данных. Рассмотрите возможность использования первых миграций кода для обновления база данных
в EF 4.1 это может быть отключена путем удаления IncludeMetadataConvention
из ModelBuilder. Однако в пункте 4.3 эта конвенция устарела и более не действует.
Как я могу иметь контекст EF 4.3 для разговора с базой данных, сгенерированной EF 4.3 построенный в другом контексте? Единственный вариант, который я нашел (который далек от идеала), - удалить таблицу метаданных, тем самым вызвав и контексты, чтобы предположить, что база данных не была построена EF.
PS: я знаю, что этот сценарий, вероятно, вызовет вопросы о почему мне нужно это сделать; я знаю, что это далеко от идеала, но будьте уверены, что это проблема, которую мне нужно решить, и у меня есть ограниченные возможности для работы с боковым.
2 ответов
настройки инициализации null
пропустит проверку совместимости модели.
Database.SetInitializer<MyContext>(null);
для EF 4.3 или выше
Database.SetInitializer<MLTServerWatcherContext>(null);
или при использовании более старой версии EF
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
(Я знаю, что он сказал, что он использует EF 4.3, но я думаю, что это хорошо, чтобы показать этот вариант тоже)