在学习代码优先的EntityFramework方法时,我不明白为什么你需要"重复"两个数据集之间的引用,即导航属性以及明确定义的外键。
例如,"注册"与"课程"有一对一的关系;和#34;学生"。在学生的模型类中,您可以定义一个导航属性:
public virtual ICollection<Enrollment> Enrollments { get; set; }
如果您进行迁移,这将在“注册”表中为Student创建一个外键列。
但是在#34; Enrollment&#34; class,您还有一个表示Student's外键的属性,如下所示:
public int StudentID { get; set; }
所以我的问题是:在两端定义这种外键关系的目的是什么?我已经看到它只在一端定义了导航属性,并且只在另一端定义了关系。两者的原因是什么?
答案 0 :(得分:4)
导航属性允许您在查询实体时访问引用实体的集合。
单个ID属性是对实际保存外键引用值的列的引用。