【发布时间】:2018-04-15 15:16:55
【问题描述】:
我在 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-one 和one-many?
更新:
在此链接http://www.learnentityframeworkcore.com/relationships 中我们可以看到,在 One-Many 和 Many-Many 中,他们没有定义 Id 外键属性,但在 One-One 中,他们定义了。这是为什么呢?
【问题讨论】:
-
这取决于您要建模的关系。 StudentId 是注册以匹配学生的 FK。当你说它有效时——什么有效?这种关系是双向的吗?是不是还有一个 Course 表和 Enrollment 是 Student-Course 的关系表?
-
@Jasen 我稍微编辑了这个问题,你能解释一下这两种关系吗?我对此有点困惑。好的,是的,有课程关系,但我认为这在我的问题中并不重要,对吧?我删除了它以保持一切简单。
-
我猜是的,因为 EF Core 根据 ef core 命名约定使用该列
-
@H.Herzl,谢谢,但实际上我需要一个具体的答案,因为我没有在我找到的所有教程中找到它,它应该在关系的双方,还是只有一个一边?
-
关于添加StudentId的定义,记住ef需要一个属性来生成join,否则ef无法生成join进行查询。如果您不应用任何映射(流利的 api 或数据注释),则必须遵循约定,否则您可以更改列的名称。
标签: c# .net entity-framework .net-core entity-framework-core