除了相应的`navigation property`之外,我还应该定义`foreign key Id`属性吗?

时间:2017-11-03 00:00:51

标签: c# .net entity-framework .net-core entity-framework-core

我在Microsoft教程中找到了这些实体:

public class Enrollment
{
    public int Id{ get; set; }

    public int StudentId { get; set; }
    public Student Student { get; set; }
}

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

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

我真的需要定义StudentId属性吗?

如果有不同类型的关系,案件会有何不同?例如one-oneone-many

更新:

在这个链接http://www.learnentityframeworkcore.com/relationships中我们可以看到,在One-Many和Many-Many中,他们没有定义Id外键属性,但在One-One中,他们确实如此。那是为什么?

1 个答案:

答案 0 :(得分:3)

我在此页面中找到了我的问题的部分答案:

http://www.learnentityframeworkcore.com/conventions

  

外键暗影属性:
  如果您选择不在关系的从属端显式包含外键属性,则EF Core将使用模式Id创建阴影属性。

但我仍然不知道在所有类型的关系中是否都是这种情况。

我希望能有所帮助。

更新

好了,现在我找到了我想要了解和理解的内容,请查看这些链接,其中包括创建模型(实体)的不同惯例:

http://www.learnentityframeworkcore.com/conventions/one-to-many-relationship

http://www.learnentityframeworkcore.com/conventions/one-to-one-relationship