首页 > 解决方案 > 实体框架核心关系——外键

问题描述

由于我刚刚开始学习实体框架,我想知道如何正确创建两个表之间的关系。

我会自己尝试,但我什至无法设置数据库连接:(

这是我的问题,这里有两个类(表)StudentGrade

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int GradeId { get; set; }
    public Grade Grade { get; set; }
}

public class Grade
{

    public int GradeId { get; set; }
    public string GradeName { get; set; }

}

就像上面的例子一样,我意识到添加类型Grade作为属性会创建与 table的关系Grade现在很重要,但是GradeId哪个不经意地持有外键值呢?它位于 type 上方,它的Grade名字是 或者它必须是严格的(在我的例子中包含 type + Id):?GradeIdStudentGradeIdForeignKeyIdTypeNameId = GradeId

标签: c#entity-frameworkforeign-keysentity-relationship

解决方案


EF 将按照约定将导航属性与外键属性匹配。因此,如果您的 Navigation Property 称为 Grade 而 Foreign Key 属性称为 GradeId,它们将自动匹配。

如果它们不遵循约定,您只需通过使用ForeignKeyAttribute装饰属性或使用OnModelCreating中的 Fluent API来显式配置它们。


推荐阅读