Json格式的Web API的结果应仅返回特定数据

时间:2019-05-08 17:20:22

标签: asp.net-mvc entity-framework asp.net-web-api

我有两个表:

学生(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的学生的结果。

1 个答案:

答案 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);
}