2015-05-28 57 views
9

我知道如何在我的上下文中爲表設置模式,但有沒有一種方法來設置上下文中所有表的默認模式? 即設置DbContext的模式名稱

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

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

回答

13

您可以配置自定義的OnModelCreating方法默認模式繼承的DbContext類像 -

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"); 
      } 
     } 

與EF6開始,你可以使用DbModelBuilder的HasDefaultSchema方法來指定數據庫模式用於所有表,存儲過程等。對於您爲其明確配置不同模式的任何對象,此默認設置將被覆蓋。

+1

當我嘗試設置「HasDefaultSchema」時,出現此錯誤 - 自從創建數據庫以來,支持「上下文」的模型已更改。考慮使用Code First Migrations來更新數據庫。 你知道如何解決它或者是什麼原因? – superachu

+0

@AchuthaKrishnan解決您需要更新您的遷移。 這是一個很好的[教程](http://www.learnentityframeworkcore.com/migrations)。 在cmd提示符下運行:dotnet ef數據庫更新 –