2012-05-16 12 views
38

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 arroja una excepción que indica¿Cómo puedo desactivar la comprobación de compatibilidad de modelos en Entity Framework 4.3?

El modelo que respalda el contexto 'Contexto' ha cambiado desde que se creó la base de datos . Considere el uso de código primeras migraciones de actualizar la base de datos

En EF 4.1 esto se podría diabled quitando el IncludeMetadataConvention del 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 de contexto EF 4.3 con una base de datos EF 4.3 generada construida por un contexto diferente? La única opción que he encontrado (que está lejos de ser ideal) es eliminar la tabla de metadatos, causando ambos contextos para suponer que la base de datos no fue construida por EF.

PS: Sé que este escenario es probable que plantear preguntas acerca de por qué Necesito 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.

Respuesta

67

Al configurar el inicializador en null se omitirá la verificación de compatibilidad del modelo.

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

Perfecto, funciona exactamente como esperaba. ¡Gracias! – STW

+1

¿Dónde colocas esto? – jep

+4

Un constructor estático en su contexto parece funcionar bastante bien para la mayoría de las aplicaciones. – bricelam

15

Para EF 4.3 o superior

Database.SetInitializer<MLTServerWatcherContext>(null); 

O si se utiliza la versión anterior de EF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 

(Yo sé que él dijo que están utilizando EF 4.3, pero creo que es bueno muestre esta opción también)

Cuestiones relacionadas