2015-05-28 26 views
9
için şema adı ayarlama

İçeriğimdeki bir tablo için şemayı nasıl ayarlayacağımı biliyorum, ancak bir bağlamdaki tüm tabloların varsayılan şemasını ayarlamanın bir yolu var mı? yaniDbContext

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

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

cevap

13

Sen töre OnModelCreating yönteminde varsayılan şema DBContext gibi sınıf miras yapılandırabilir - Eğer veritabanı şemasını belirlemek DbModelBuilder üzerinde HasDefaultSchema yöntemini kullanabilirsiniz Ef6 ile başlayarak

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

Tüm tablolar, saklı yordamlar vb. için kullanın. Bu varsayılan ayar, farklı bir şema için açıkça yapılandırdığınız tüm nesneler için geçersiz kılınacaktır.

+1

"HasDefaultSchema" ayarlamayı denediğimde, bu hatayı alıyorum - veritabanı oluşturulduktan sonra '' bağlamı destekleyen model değişti. Veritabanını güncellemek için Kod İlk Geçişlerini kullanmayı düşünün. Nasıl çözüleceğini biliyor musunuz, ya da nedeni nedir? Göçmenlerinizi güncellemeniz gerektiğini çözmek için – superachu

+0

@AchuthaKrishnan. Bu iyi bir [öğretici] (http://www.learnentityframeworkcore.com/migrations). cmd isteminde şunu çalıştırın: dotnet ef veritabanı güncelleştirmesi –