我知道如何在我的上下文中设置表的模式,但是否有一种方法可以为上下文中的所有表设置默认模式?
[Schema = "Ordering"]
public class MyContext:DbContext
{
public MyContext()
: base("name=ConnectionString")
{
}
public DbSet<Student> Students { get; set; }
}
我知道如何在我的上下文中设置表的模式,但是否有一种方法可以为上下文中的所有表设置默认模式?
[Schema = "Ordering"]
public class MyContext:DbContext
{
public MyContext()
: base("name=ConnectionString")
{
}
public DbSet<Student> Students { get; set; }
}
你可以在自定义继承的DbContext类的OnModelCreating方法中配置默认模式,例如:
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方法指定用于所有表、存储过程等的数据库模式。这个默认设置将被覆盖,任何您明确为不同架构配置的对象都将被覆盖。
[Table("blogs", Schema = "blogging")]
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs", schema: "blogging");
}
或者使用流畅的API在模型级别定义默认架构:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("blogging");
}