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