实体框架一对多关系

时间:2013-11-10 14:06:04

标签: c# entity-framework ef-code-first

我有两个简单的类:

class Student
{
    public int StudentId { get; set; }
    public int IndeksNo { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public virtual Group Group { get; set; }
}

class Group
{
    public int GroupId { get; set; }
    public string Name { get; set; }
    public virtual List <Student > Students { get; set; }
}

正确创建数据库(使用Code First)。我已经在两个表中添加了几个项目,但学生列表和Student中的Group属性都是null。我不知道为什么。我已经搜索了大约一个小时的解决方案,我想出了类似的东西:

modelBuilder.Entity<Student>()
    .HasRequired(st => st.Group)
    .WithMany(gr => gr.Students)
    .WillCascadeOnDelete(false);

但它没有帮助。我不知道可能出了什么问题,或者为什么Group.Students和Student.Group始终为null。从db中成功选择了组列表和学生列表 - 我的意思是除了那些连接之外的所有参数。

1 个答案:

答案 0 :(得分:2)

要使用EntityFramework的Lazy Loading功能。您的导航属性必须是虚拟的。在你的Student课程中。问题在于您的Group课程。导航属性是虚拟List<Student>,必须是virtual ICollection<Student>

您只需将Group更改为

即可
class Group
{
    public int GroupId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Student > Students { get; set; }
}