标题有点令人困惑,但我无法想到任何其他方式。所以我将以一个例子来解释。
我们说我有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会有任何缺点吗?
答案 0 :(得分:1)
我认为最终你需要外键属性 如果学生改变学校,您将只想通过了解SchoolId来更新Associated属性。
此外,如果您想要将新学生添加到现有学校,您必须从相同的上下文加载学校,否则您最终会得到duplicate records
因此,也要添加外键属性
public int SchoolId{ get; set; }