タイトルはちょっと混乱しますが、私はそれを置く他の方法は考えられませんでした。そこで例を挙げて説明します。Entity Frameworkで外部キーIDを外部キーIDまたはそのテーブルのC#モデルとして格納する必要がありますか?
Student
がSchool
クラスに属し、School
は、多くの学生を持つことができる、のは、私はStudent
クラスがあるとしましょう。私たちは、その後School
モデルのために書く傾向にあることである:
public class School
{
public int ID { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
そしてStudent
モデル用:
public class Student
{
public int ID { get; set; }
public virtual School School { get; set; }
}
だからではなくStudent
クラスの外部キーSchoolID
を持つのを見ることができ、 実際のSchool
オブジェクトがEFマジックのおかげでマップされています。それはバーチャルにマークされているため、遅延ロードされています。
これは、EFを使用して、POCOモデル内のすべての外部キーIDを削除し、それらのオブジェクトへの実際の参照で置き換えることは安全であるということですか? IDの代わりにオブジェクトを直接参照することには欠点がありますか?
これらPOCOSが十分に形成されていない、主キーは、[主キー]で装飾されている必要があり、したがって、エンティティ・フレームワークは、外部キーを決定するために、関連エンティティからその属性を使用します。最後に、いいえ、常にプライマリキーを持っている必要があります – Gusman
@Gusman Thanks Gusman。うん、プライマリキーがあることは間違いないでしょう、それらはほんの単純な例でした。私の質問は、外来キー(ID)の必要性に関するものです。 –
Student POCOでSchoolIdを作成する必要はありませんが、EFはDBにフィールドを作成して関係を作成します。生徒を学校から変更したい場合は、通信業者の学校を検索してその学校からアイテムを取り出し、それをもう一方の学校に追加するだけです。欠点はありません。 – Gusman