Entity Framework SaveChanges 未使用提供的架构

Entity Framework SaveChanges not using provided Schema

假设一个(简化的)域对象如下:

public class MyObject
{
    public Guid Id { get; set; }
    public String Field1 { get; set; }
    public String Field2 { get; set; }
}

以这种方式附加到我的上下文:

public class MyDbContext : DbContext
{
    public DbSet<MyObject> MyObjects { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("myschema");

        modelBuilder.Configurations
            .AddFromAssembly(Assembly.GetExecutingAssembly());

        modelBuilder.Conventions
            .AddFromAssembly(Assembly.GetExecutingAssembly());
    }
}

并像这样映射:

public class MyObjectMapping : EntityTypeConfiguration<MyObject>
{
    public MyObjectMapping()
    {
        ToTable("MyObject", "myschema");
        HasKey(x => x.Id);
    }
}

然而,如果我从 xml 加载对象并将其保存到数据库:

var myObject = MyObjects.FromXml(xmlFilepath).ToDomain();
var context = new MyDbContext();
context.MyObjects.Add(myObject);
context.SaveChanges();

我收到这个错误:

System.Data.SqlClient.SqlException Invalid object name 'dbo.MyObjects'.

其中 dbo 应该是 myschema

问题

What should I do to make sure the correct schema is used instead of dbo?

我专门根据上下文和映射定义设置了架构,我缺少什么?

看起来是 EF6 中的错误,如果我以 DatAnnotation 方式而不是 Fluent 方式进行设置,我可以生成我想要的数据库。所以我像这样装饰我的领域对象:

[Table("MyObject", Schema = "myschema")]
public class MyObject
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public Guid Id { get; set; }
    public String Field1 { get; set; }
    public String Field2 { get; set; }
}

帮我修好了。