私は2015年多重継承(多分抽象クラス?)C#Entity Frameworkの
が、私は」のVisual Studioを使ってC#でのEntity Frameworkの6(コード・ファースト)に基づいて、データベースの開発に取り組んできた最後の週現在、継承が提供するすべてのオプションを扱っています。 この時点でデータベースの標準に従って、私は主キーで複数の継承を実装する必要があります。 これはどういう意味ですか? これは、別のクラスから継承するクラスを実装し、そのクラスを親クラスと区別するための独自のPKを実装する必要があることを意味します。この時点で、私はTPCでそれを実装することができ、親クラスを抽象化し、親にPKを定義しません。これは、この時点でコードのサンプルです
public abstract class Person
{
public string Name { get; set; }
public string LastName { get; set; }
}
[Table("Students")]
public class Student : Person
{
[Key]public int Id_student { get; set; }
public string code_s { get; set; }
public virtual ICollection<Course> courses { get; set; }
}
は、その後、私は自分のデータベースを構築するために従うべき基準が別の継承親として学生を取り、別の作成を実装するために私を必要とする(これは動作し、私はそれをテストしています)学生から継承するクラス。私が持っていた 最初と愚かなアイデアが
ChildOfChild : Student
を書いて、それは同じくらい簡単にすることでした。しかし、明らかにそれは動作しませんでした。
それでは、私は学生クラス抽象クラスを作成する可能性がありますが、私がクラス抽象クラスを宣言したとき、それをインスタンス化してテーブルを作成することはできませんでした。私は抽象クラスやこれを開発するのに役立つ可能性のある他の方法を使用して、これを行うための他の方法があるかどうかはわかりません。 私がこれを解決しようとしている問題を理解していない場合は、私が持っているコードのサンプルです。
public abstract class Person
{
public string Name { get; set; }
public string LastName { get; set; }
}
[Table("Students")]
public class Student : Person
{
[Key]public int Id_student { get; set; }
public string code_s { get; set; }
public virtual ICollection<Course> courses { get; set; }
}
[Table("ExchangeStudent")]
public class ExchangeStudent : Student
{
[Key]public int Id_exchange { get; set; }
public string HomeUniversity {get; set;}
}
「学生」と「ExchangeStudents」を別々のテーブルに分割したいのですが、すべての生徒を選択して生徒をクラスにリンクするときに、自分が難しくなると思います。あなたが直面している問題の例ですか?_ – Scrobi
これは私が実装しなければならない事例の一例です。実際のケースはStudent-ExchangeStudentよりもはるかに複雑です。 実モデルには、他のクラスが継承する一般クラスと、この子エンティティを継承する他のエンティティがあります。 –
PKとしてのPersonIdだけではないのはなぜですか?それは普通のやり方です。 –