Asp.net mvc 如果父类是抽象类,则不会显示MVC EF:鉴别器字段

Asp.net mvc 如果父类是抽象类,则不会显示MVC EF:鉴别器字段,asp.net-mvc,asp.net-mvc-3,entity-framework,migration,discriminator,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Migration,Discriminator,我有一个名为产品的实体: public abstract class Product : Entity { public long ProductId { get; set; } public long Price { get; set; } public abstract string Name { get; } } 我有一种叫做玩具的产品 class Toy : Product { public override string Name

我有一个名为产品的实体

  public abstract class Product : Entity
  {
    public long ProductId { get; set; }
    public long Price { get; set; }
    public abstract string Name { get; }
  }
我有一种叫做玩具的产品

  class Toy : Product
  {
    public override string Name { get { return "Toy Product"; } }
    public string Colour { get; set; }
  }
所以实际上,玩具就是一种产品。产品有自己的属性,但它也有一个称为“名称”的抽象属性。孩子知道自己的名字,所以会覆盖它

这对我来说似乎很好,但是当我运行Add迁移时(因为我首先使用EF代码),discriminator字段丢失了。如果删除抽象字段,并使类非抽象,则会显示鉴别器字段

我可以将父类抽象化吗


谢谢

它删除了鉴别器,因为当您只有一个实体继承时,就不需要鉴别器,因为您无法实例化抽象类

如果添加另一个继承的实体,如Bear:

public class Bear : Product
{
    public override string Name { get { return "Bear Product"; } }
    public string Fur { get; set; }
}
您的鉴别器列将返回:

这就成功了。谢谢(将在我允许的情况下尽快将其标记为已回答;)