2014-07-21 9 views
12

sto funzionando nel seguente errore dopo l'aggiornamento EF alla versione 6.1.1:Entity Framework compatibilità 6.1.1 disabilita model checking

Un'eccezione di tipo 'System.InvalidOperationException' in EntityFramework.dll

Ulteriori informazioni: Il modello che supporta il contesto TvstContext è stato modificato dopo la creazione del database. Considerare l'utilizzo di Code First Migrations per aggiornare il database (http://go.microsoft.com/fwlink/?LinkId=238269).

Potremmo risolvere questo problema in passato, come descritto in questa domanda: Where is modelBuilder.IncludeMetadataInDatabase in EF CTP5?

Tuttavia, non riesco a sbarazzarsi dell'errore.

+0

Si è abilitato il AutomaticMigrations? O stai usando le migrazioni manuali? Se quest'ultimo, hai provato a creare una nuova migrazione? – Johnny

risposta

44

Questo dovrebbe funzionare, metterlo da qualche parte nel costruttore della vostra DbContext derivato:

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

Questa risposta merita più voti! – ilter

+0

Grazie. Trovo che EF ottenga il tracking delle modifiche del modello danneggiato in alcuni casi (ad esempio, molti cambiamenti di modello e migrazione durante il refactoring per la soluzione migliore) e l'unico modo per risolverlo è quello di ripristinare manualmente le modifiche ed eliminare le migrazioni bloccate dalla tabella della migrazione. Il rilevamento del cambiamento del modello EF può essere davvero fastidioso a volte. Laravel ha migrazioni, ma nessun modello di monitoraggio, e funziona bene. Suppongo che questo sia il prezzo per il tracciamento del modello: complessità e problemi aggiuntivi quando si vuole combattere contro il tracking automatico EF, quindi a volte è meglio spegnerlo completamente. – JustAMartin

+0

Grazie. Non ho bisogno di tracciamento delle modifiche del modello per i miei requisiti. Fa solo il trucco. – Miller

13

È anche possibile impostare in Web.config file di

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings>  
    <add key="DatabaseInitializerForType YourNamespace.YourDbContext, AssemblyName" 
      value="Disabled" /> 
    </appSettings> 
</configuration> 

Decisione da: http://www.entityframeworktutorial.net/code-first/turn-off-database-initialization-in-code-first.aspx

+1

Questo funziona ed è probabilmente preferibile, poiché non sono richieste modifiche al codice e il controllo di compatibilità può essere attivato/disattivato a seconda dell'ambiente, ecc. –

1

Per espandere le risposte di Dabblernl:

public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
     Database.SetInitializer<ApplicationDbContext>(null); 
    } 
Problemi correlati