2012-05-23 1 views

Antwort

21

Verwenden Sie diese auf Ihrem Start der Anwendung deaktivieren Datenbankinitialisierung und Migrationen:

Database.SetInitializer<YourContextType>(null); 
+0

Ich füge diesen Code in Construction, aber mir nicht helfen – Greg

+0

Der Konstruktor ist zu spät Greg. Lesen Sie die Antwort erneut. App Start ist in Ihrem global.asax – Stimul8d

+0

Gibt es eine Möglichkeit, es global zu deaktivieren, oder muss ich dies für jeden dbContext tun? – JMarsch

7

Wenn Sie Datenbankinitialisierung/Migration vollständig unabhängig davon, in welcher Sie Ihre Kontext verwenden Projekt deaktivieren möchten, können Sie hinzufügen ein statischer Konstruktor für Ihren Kontext, um den Initialisierer aufzurufen. Dadurch wird sichergestellt, dass der SetInitializer vor der ersten Erstellung/Verwendung Ihres Kontextes aufgerufen wird.

public class YourContext : DbContext 
{ 
    static YourContext() 
    { 
     // don't let EF modify the database schema... 
     Database.SetInitializer<YourContext >(null); 
    } 

    public YourContext() : base("name=YourContext") 
    {} 
    ... 
} 

Wenn Sie jedoch nur das in einigen wenigen ausgewählten Projekten tun wollen, sind Sie besser dran, es explizit über Start der Anwendung zu tun - zum Beispiel während Ihres normalen IoC-Setups, wie von Ladislav vorgeschlagen.