为 DbContext 设置架构名称
Setting schema name for DbContext
我知道如何在我的上下文中为 table 设置架构,但是有没有办法为上下文中的所有 table 设置默认架构?
即
[Schema = "Ordering"]
public class MyContext:DbContext
{
public MyContext()
: base("name=ConnectionString")
{
}
public DbSet<Student> Students { get; set; }
}
您可以在自定义继承的 DbContext class 的 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 方法来指定要用于所有表、存储过程等的数据库架构。对于您明确为其配置不同架构的任何对象,此默认设置将被覆盖。
根据 Microsoft 官方文档,您应该使用数据注释或 FluentAPI。
- 对于数据注释:
[Table("blogs", Schema = "blogging")]
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
- 流利程度API
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs", schema: "blogging");
}
或使用流畅的 API:
在模型级别定义默认架构
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("blogging");
}
我知道如何在我的上下文中为 table 设置架构,但是有没有办法为上下文中的所有 table 设置默认架构? 即
[Schema = "Ordering"]
public class MyContext:DbContext
{
public MyContext()
: base("name=ConnectionString")
{
}
public DbSet<Student> Students { get; set; }
}
您可以在自定义继承的 DbContext class 的 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 方法来指定要用于所有表、存储过程等的数据库架构。对于您明确为其配置不同架构的任何对象,此默认设置将被覆盖。
根据 Microsoft 官方文档,您应该使用数据注释或 FluentAPI。
- 对于数据注释:
[Table("blogs", Schema = "blogging")]
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
- 流利程度API
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs", schema: "blogging");
}
或使用流畅的 API:
在模型级别定义默认架构protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("blogging");
}