Ich habe Entity Framework 5.0 RC für Framework 4.0 in meinem Projekt installiert. Aber wenn ich versuche, Daten von Ansichten zu bekommen, bekomme ich einen Fehler. EF versucht, eine Tabelle für diese Entität zu erstellen.Wie Sie die automatische Tabellenerstellung in EF 5.0 deaktivieren?
13
A
Antwort
21
Verwenden Sie diese auf Ihrem Start der Anwendung deaktivieren Datenbankinitialisierung und Migrationen:
Database.SetInitializer<YourContextType>(null);
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.
Ich füge diesen Code in Construction, aber mir nicht helfen – Greg
Der Konstruktor ist zu spät Greg. Lesen Sie die Antwort erneut. App Start ist in Ihrem global.asax – Stimul8d
Gibt es eine Möglichkeit, es global zu deaktivieren, oder muss ich dies für jeden dbContext tun? – JMarsch