web-dev-qa-db-ja.com

DbContextのスキーマ名の設定

コンテキスト内のテーブルのスキーマを設定する方法を知っていますが、コンテキスト内のすべてのテーブルのデフォルトスキーマを設定する方法はありますか?つまり.

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

    public DbSet<Student> Students { get; set; }
}
16
John S

次のように、カスタム継承された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メソッドを使用して、すべてのテーブル、ストアドプロシージャなどに使用するデータベーススキーマを指定できます。このデフォルト設定は、別のスキーマを明示的に構成したオブジェクトに対して上書きされます。

23
DfrDkn