我有两个表:
学生(StudentId,StudentName,ClassId)
Class(ClassId,ClassName)
当我致电Web Api来获取学生的记录时,它将返回该学生以及与该班级相关的所有其他学生。
我只想记录一个学生上课的记录。
我在其中使用了Entity Framework。
制作另一个modelView时有可能获得准确的结果。但是不想制作另一个模型。
public IHttpActionResult GetStudent(int id)
{
Student student = db.Students.Find(id);
if (student == null)
{
return NotFound();
}
return Ok(student);
}
我得到像Json一样的结果
"Class": {
"Students": [
{
"StudentId": 12,
"StudentName": "Ahtasham Ul Haq",
"ClassId": 2
},
{
"StudentId": 14,
"StudentName": "Waseem Akram",
"ClassId": 2
}
],
"ClassId": 2,
"ClassName": "MCS"
},
"StudentId": 5,
"StudentName": "Basit Ali"
"ClassId": 2
但是Ш想要获得ID为5而不是12和14的学生的结果。
答案 0 :(得分:0)
比较您发布的响应和显示的控制器操作,我猜您在Class
中具有Student
的导航属性,而您的帖子中也没有提到。通过将Find
替换为SingleOrDefault
,您只能返回没有关联子数据的学生详细信息。使用SingleOrDefault
,如果您想包含相关实体,则需要专门.Include
,否则它们将仅返回指定实体的数据。
public IHttpActionResult GetStudent(int id)
{
Student student = db.Students.SingleOrDefault(x => x.StudentId == id);
if (student == null)
{
return NotFound();
}
return Ok(student);
}