【问题标题】:Exception while trying to iterate a navigation propery尝试迭代导航属性时出现异常
【发布时间】:2014-05-24 16:22:55
【问题描述】:

我在 VS2013 上有一个带有 EF 的控制台应用程序,我有 2 个模型:

 public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Subject> Subjects { get; set; }
    public Student()
    {
        Subjects = new List<Subject>();
    }
}

public class Subject
{
    public int SubjectId { get; set; }
    public string Name { get; set; }
    public virtual Student Student { get; set; }
    public Subject()
    {
        Student = new Student();
    }
}

另外,我得到了他们的数据库上下文。我能够更新数据库并查看我的表格,但我无法迭代导航属性......例如:

我做错了什么?

这是我的 EF 版本:

【问题讨论】:

  • 内部异常是怎么说的?
  • 为什么在构建学科时创建学生,但在构建学生时创建新学科?看起来很循环,这可能是个问题?
  • 在你显示内部异常之前,这个问题是无法回答的。

标签: c# entity-framework visual-studio-2013 console-application navigation-properties


【解决方案1】:

改用此代码:

IList<Student> studs = db.Students.Include("Subjects").ToList();

foreach (var _stud in studs) {
  foreach (var sub in _stud.Subject){

}
}

这是延迟加载功能。你可以把构造函数拿出来

【讨论】:

  • 没有理由假设不会发生延迟加载。此外,它会产生一个不同的异常。
猜你喜欢
  • 2021-10-04
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多