Setting schema name for DbContext

John S picture John S · May 28, 2015 · Viewed 23.5k times · Source

I know how to set the schema for a table in my context but is there a way to set the default schema for all the tables in a context? i.e.

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

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

Answer

DfrDkn picture DfrDkn · May 28, 2015

You can configure the default schema in OnModelCreating method of your custom inherited DbContext class like -

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

Starting with EF6 you can use the HasDefaultSchema method on DbModelBuilder to specify the database schema to use for all tables, stored procedures, etc. This default setting will be overridden for any objects that you explicitly configure a different schema for.