使用Discriminator属性防止类包含在生成的迁移中

时间:2015-01-23 05:11:07

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

我有一个被映射到数据库表的类。让我们说这是我的班级:

public class Customer
{
    public int ID {get;set;}
    public string Name {get;set;}
}

现在,我正在尝试创建一个继承Customer的子类,并添加一些新字段,如:

public class CustomerWithAttr : Customer
{
    public decimal Sum {get;set;}
}

出现的问题是,当我现在运行Add-Migration时,我得到:

public override void Up()
{
    AddColumn("dbo.Customer", "Sum", c => c.Decimal(precision: 18, scale: 2));
    AddColumn("dbo.Customer", "Discriminator", c => c.String(nullable: false, maxLength: 128));
}

我没有在Context类中添加任何内容(如DbSet<CustomerWithAttr>)。我只想使用我的新子类(CustomerWithAttr)而不管迁移,我不需要数据库表。那么我如何告诉实体框架忽略它并且不在迁移中生成不必要的列?

1 个答案:

答案 0 :(得分:0)

这似乎可以解决问题:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<CustomerWithAttr>();
}

从我的角度来看,这不是最好的解决方案,但它确实有效......