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; }
  }

事実上、おもちゃは製品です。製品には独自のプロパティがありますが、「名前」と呼ばれる抽象的なプロパティもあります。子供は自分の名前を知っているので、それを上書きします。

これは私には問題ないように見えましたが、Add-Migrationを実行すると(EF Code-Firstを使用しているため)、識別子フィールドがありません。抽象フィールドを削除し、クラスを非抽象フィールドにすると、識別子フィールドが表示されます。

親クラスを抽象化できますか?

ありがとう!

4

1 に答える 1

3

抽象クラスをインスタンス化できないため、継承するエンティティが1つしかない場合は識別子が不要になるため、識別子が削除されました。

Bearのように、継承する別のエンティティを追加する場合:

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

そして、あなたの弁別子の列が戻ってきます:

ここに画像の説明を入力してください

于 2012-09-13T15:19:31.137 に答える