【问题标题】:Why is there duplication of references in code-first EntityFramework?为什么在代码优先的 EntityFramework 中有重复的引用?
【发布时间】:2016-02-18 06:35:00
【问题描述】:

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

例如,“注册”与“课程”和“学生”是一对一的关系。在学生的模型类中,您定义一个导航属性,如下所示:

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

如果您进行迁移,这将在 Enrollments 表中为 Student 的外键创建一列。

但在“Enrollment”类中,您还有一个代表学生外键的属性,如下所示:

public int StudentID { get; set; }

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 但我可以从“注册”中完全省略单个 ID 属性,迁移后该列仍将在其表中创建。不包括单一 ID 属性如何限制我?
    • 我的猜测是,当您尝试访问实体时,您将无法访问该属性。
    • 有道理,这就是我的错误。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2015-11-15
    • 2016-04-14
    相关资源
    最近更新 更多