为什么在代码优先的EntityFramework中存在重复引用?

时间:2015-11-17 01:25:37

标签: c# sql-server entity-framework asp.net-mvc-5

在学习代码优先的EntityFramework方法时,我不明白为什么你需要"重复"两个数据集之间的引用,即导航属性以及明确定义的外键。

例如,"注册"与"课程"有一对一的关系;和#34;学生"。在学生的模型类中,您可以定义一个导航属性:

public virtual ICollection<Enrollment> Enrollments { get; set; }

如果您进行迁移,这将在“注册”表中为Student创建一个外键列。

但是在#34; Enrollment&#34; class,您还有一个表示Student's外键的属性,如下所示:

public int StudentID { get; set; }

所以我的问题是:在两端定义这种外键关系的目的是什么?我已经看到它只在一端定义了导航属性,并且只在另一端定义了关系。两者的原因是什么?

1 个答案:

答案 0 :(得分:4)

导航属性允许您在查询实体时访问引用实体的集合。

单个ID属性是对实际保存外键引用值的列的引用。