繁体   English   中英

我应该将外键表存储为Entity Framework中的外键ID还是该表的C#模型?

[英]Should I store foreign key table as foreign key ID or the C# model of that table in Entity Framework?

标题有点令人困惑,但我想不出其他任何方式放置它。 因此,我将举例说明。

假设我有一个Student班,一个Student属于School班,一个School可以有很多学生。 然后,我们倾向于为School模型编写的是:

public class School
{
    public int ID { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}

对于Student模型:

public class Student
{
    public int ID { get; set; }
    public virtual School School { get; set; }
}

因此,您可以看到,由于有EF魔术,我们没有在Student类中使用外键 SchoolID ,而是映射了实际的School对象 ,并且将其标记为虚拟,因此也可以延迟加载。

现在,这是否意味着使用EF我们可以安全地删除POCO模型中的所有外键ID,并用对这些对象的实际引用替换它们? 直接引用对象而不是ID是否有不利之处?

我认为最终您将需要外键属性。
如果学生更换学校,则仅希望通过了解SchoolId来更新“关联”属性。

另外,如果您要将新学生添加到现有学校,则必须从相同的上下文中加载学校,否则最终将产生重复的记录

因此,也添加外键属性

public int SchoolId{ get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM