c# - ¿Cómo puedo desactivar la comprobación de compatibilidad de modelos en Entity Framework 4.3?
.net entity-framework (2)
Estoy trabajando con EF 4.3 y tengo un contexto que necesita hablar con una base de datos que fue generada por otra biblioteca usando EF Code First 4.3. El contexto está arrojando una excepción que indica
El modelo que respalda el contexto ''Contexto'' ha cambiado desde que se creó la base de datos. Considere usar Code First Migrations para actualizar la base de datos
En EF 4.1 esto podría ser diableado al eliminar IncludeMetadataConvention
de ModelBuilder. Sin embargo, en 4.3 esta convención ha quedado en desuso y ya no tiene un efecto.
¿Cómo puedo tener una conversación contextual de EF 4.3 con una base de datos generada por EF 4.3 creada por un contexto diferente ? La única opción que he encontrado (que está lejos de ser ideal) es eliminar la tabla de metadatos, provocando que ambos contextos asuman que la base de datos no fue construida por EF.
PD: Sé que este escenario probablemente plantee preguntas sobre por qué tengo que hacer esto; Sé que está lejos de ser ideal, pero tenga la seguridad de que es un problema que necesito resolver y tengo opciones limitadas para trabajar con lateralmente.
Establecer el inicializador como null
omitirá la verificación de compatibilidad del modelo.
Database.SetInitializer<MyContext>(null);
Para EF 4.3 o superior
Database.SetInitializer<MLTServerWatcherContext>(null);
O si usa una versión anterior de EF
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
(Sé que dijo que está usando EF 4.3, pero creo que es bueno mostrar esta opción también)