0

Student使用以下代码获得了表的主键:

var stud_id = (from p in context.Students
                          where p.Student_Name == "Bruce"
                          select  p.Student_Id );

当我尝试使用stud_id以下代码检索整个实体时:

Student requiredstud = new Student();
foreach (var p in stud_id)
            {
                //Console.WriteLine(p);

            requiredObj = context.Students.Find(p);
            string tempObj = JsonSerializer.SerializeToString<Student>(requiredObj);
            Console.WriteLine(tempObj);

            }

它在线上给出了以下异常:

requiredObj = context.Students.Find(p);

在此处输入图像描述

如何解决此问题并获取详细信息student

编辑: 内部异常

是:{"There is already an open DataReader associated with this Command which must be closed first."}

4

1 回答 1

0

由于您正在迭代 anIQueryable并试图找到另一个使用相同的学生context,因此您遇到了异常。您应该.ToList在查询中进行迭代并从数据库中获取记录。稍后您可以在 foreach 循环中使用上下文。所以你的查询可以是:

var stud_id = (from p in context.Students
                          where p.Student_Name == "Bruce"
                          select  p.Student_Id ).ToList();

或者

var stud_id = context.Students.Where(p=> p.Student_Name == "Bruce").ToList();
于 2012-12-31T04:45:32.057 回答