1

我有一个名为Product的实体:

  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),鉴别器字段丢失了。如果删除抽象字段,并使类成为非抽象类,则出现鉴别器字段。

我可以使父类抽象吗?

谢谢!

4

1 回答 1

3

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

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

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

你的鉴别器列会回来:

在此处输入图像描述

于 2012-09-13T15:19:31.137 回答