2

我有两个简单的类:

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 中的 Student 列表和 Group 属性始终为空。我不知道为什么。我已经搜索了大约一个小时的解决方案,我想出了这样的事情:

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

但这无济于事。我不知道可能出了什么问题,也不知道为什么 Group.Students 和 Student.Group 总是为空。成功地从 db 中选择了组列表和学生列表 - 我的意思是除了那些连接之外的所有参数。

4

1 回答 1

2

为了使用 EntityFramework 的延迟加载功能。您的导航属性必须是虚拟的。在你的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; }
}
于 2013-11-10T14:31:55.667 回答