2015-05-28 15 views
9

Ich weiß, wie das Schema für eine Tabelle in meinem Kontext festgelegt wird, aber gibt es eine Möglichkeit, das Standardschema für alle Tabellen in einem Kontext festzulegen? dhSchemaname für DbContext festlegen

[Schema = "Ordering"] 
public class MyContext:DbContext 
{ 
    public MyContext() 
     : base("name=ConnectionString") 
    { 
    } 

    public DbSet<Student> Students { get; set; } 
} 

Antwort

13

Sie können das Standardschema in OnModelCreating Methode der benutzerdefinierten Konfiguration DbContext Klasse geerbt wie -

public class MyContext: DbContext 
     { 
      public MyContext(): base("MyContext") 
      { 
      } 

      public DbSet<Student> Students { get; set; } 

      protected override void OnModelCreating(DbModelBuilder modelBuilder) 
      { 
       //Configure default schema 
       modelBuilder.HasDefaultSchema("Ordering"); 
      } 
     } 

mit EF6 Starten Sie die HasDefaultSchema Methode auf DbModelBuilder verwenden können, um das Datenbankschema zu spezifizieren Verwenden Sie diese Option für alle Tabellen, gespeicherten Prozeduren usw. Diese Standardeinstellung wird für alle Objekte außer Kraft gesetzt, für die Sie explizit ein anderes Schema konfigurieren.

+1

Als ich versuchte, "HasDefaultSchema" zu setzen, erhalte ich diesen Fehler - das Modell, das den Kontext unterstützt, hat sich geändert, seit die Datenbank erstellt wurde. Erwägen Sie, Code First Migrations zu verwenden, um die Datenbank zu aktualisieren. Wissen Sie, wie man es löst oder was ist die Ursache? – superachu

+0

@AchuthaKrishnan zu lösen, dass Sie Ihre Migrationen aktualisieren müssen. Dies ist eine gute [tutorial] (http://www.learnentityframeworkcore.com/migrations). In cmd Eingabeaufforderung, führen Sie dies: dotnet ef Datenbankupdate –