MVC EF:如果父类是抽象的,则不会出现Discriminator字段

时间:2012-09-13 15:12:07

标签: 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 { get { return "Toy Product"; } }
    public string Colour { get; set; }
  }

如此有效,玩具是一种产品。 Product有自己的属性,但它也有一个名为“ Name ”的抽象属性。孩子知道自己的名字,所以它会覆盖它。

这对我来说似乎很好,但是当我运行Add-Migration(因为我使用的是EF Code-First)时, discriminator 字段丢失了。如果删除抽象字段,并使类非抽象,则出现鉴别器字段。

我可以创建父类摘要吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

public class Bear : Product
{
    public override string Name { get { return "Bear Product"; } }
    public string Fur { get; set; }
}

你的鉴别者专栏将会回来:

enter image description here