0

私はVisual Studio 2015でEntity Framework 6(コードファースト)の継承に取り組んでいます。 この時点で、私はこのような多重継承を試したかったのです(これは正確な構文ではありません)。複数レベルの継承。 Entity Framework C#

public abstract class Person { 
    public String Name 
    public String LastName 
} 

public class Teacher : Person { 
    [Key]public int Id_Teacher 
} 

public class Student : Person { 
    [Key] public int Id_Student 
    public string code_s 
} 

public class ExchangeStudent : Student { 
    [Key] public int Id_ExchangeStud 
    public string HomeUniversity 
} 

私はPersonとChildテーブルの教師& Studentを作成する最初のステップを作成しましたが、3番目の子テーブルを作成する場合は機能しません。

私は最初のステップでTPCを使っていましたので、私は生徒と教師のDbSetを得ました。

3番目のテーブルEXCHANGE STUDENTを実装する方法はありますか?

ありがとうございました。私が正しく理解していれば

+0

あなたが直面している問題は何ですか?そしてすべてのメンバーはセミコロンを持っていません。それはプロパティまたは変数です –

+1

主キーのプロパティをオーバーライドしないでください。それを基底クラスに入れ、それをIDと呼び、すべての派生クラスにtiを使います。 – DavidG

答えて

0

、お使いのモデルのデザインは

public class Person 
    { 
     [key] //No need to mention [key] annotation here, Because EF will automatically understand Id property will act as Primary Key. 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string LastName { get; set; } 
    } 

    public class Teacher: Person 
    { 

    } 

    public class Student: Person 
    { 
     public string Code { get; set; } 
    } 

    public class ExchangeStudent : Student 
    { 

     public string HomeUniversity { get; set; } 
    } 

あなたは、各子クラスの各[キー]性質を避けるために必要があり、以下のようになります。 B aseクラスは、テーブルと他のすべての子クラスのPrimaryKeyとして機能するIdプロパティを持ちます。

上記に従うと、移行スクリプトをテーブルに適用すると、子クラスのDiscriminator列を持つテーブル(Persons)が作成されます。

これはあなたが前進するのに役立つことを願っています!

関連する問題