设置DbContext的模式名称

时间:2015-05-28 16:29:24

标签: c# entity-framework entity-framework-6 database-schema

我知道如何在我的上下文中为表设置架构,但有没有办法为上下文中的所有表设置默认架构? 即

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

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

1 个答案:

答案 0 :(得分:21)

您可以在自定义继承的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方法指定用于所有表,存储过程等的数据库模式。对于您为其显式配置不同模式的任何对象,将覆盖此默认设置。