我应该将外键表作为外键ID存储,还是将该表的C#模型存储在实体框架中?

时间:2017-01-05 13:39:52

标签: c# .net 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; }
}

因此,您可以看到SchoolID课程中没有外键 Student,而是实际School对象感谢EF魔术,它被标记为虚拟,所以它也是懒惰的。

现在这是否意味着使用EF我们可以安全地消除POCO模型中的所有外键ID,并将它们替换为对这些对象的实际引用?直接引用对象而不是ID会有任何缺点吗?

1 个答案:

答案 0 :(得分:1)

我认为最终你需要外键属性 如果学生改变学校,您将只想通过了解SchoolId来更新Associated属性。

此外,如果您想要将新学生添加到现有学校,您必须从相同的上下文加载学校,否则您最终会得到duplicate records

因此,也要添加外键属性

public int SchoolId{ get; set; }