Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Json格式的web api结果应仅返回特定数据_Asp.net Mvc_Entity Framework_Asp.net Web Api - Fatal编程技术网

Asp.net mvc Json格式的web api结果应仅返回特定数据

Asp.net mvc Json格式的web api结果应仅返回特定数据,asp.net-mvc,entity-framework,asp.net-web-api,Asp.net Mvc,Entity Framework,Asp.net Web Api,我有两张桌子: 学生(学生ID、学生姓名、ClassId) 类(ClassId,ClassName) 当我调用WebAPI获取一个学生的记录时,它会返回该学生以及与该类相关的所有其他学生 而我只想得到一个学生上课的记录 我在其中使用了实体框架 制作另一个modelView时,可以获得准确的结果。但我不想再做一个模型 public IHttpActionResult GetStudent(int id) { Student student = db.Students.Fin

我有两张桌子:

学生(学生ID、学生姓名、ClassId)

类(ClassId,ClassName)

当我调用WebAPI获取一个学生的记录时,它会返回该学生以及与该类相关的所有其他学生

而我只想得到一个学生上课的记录

我在其中使用了实体框架

制作另一个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的结果。

比较您发布的响应和显示的控制器操作,我猜您的
学生的
中也有一个导航属性。通过将
Find
替换为
SingleOrDefault
,您只能返回没有关联子数据的学生详细信息。使用
SingleOrDefault
,如果要包含相关实体,则需要明确地
。包含它们,否则将只返回指定实体的数据

public IHttpActionResult GetStudent(int id)
{
    Student student = db.Students.SingleOrDefault(x => x.StudentId == id);
    if (student == null)
    {
        return NotFound();
    }
    return Ok(student);
}

比较您发布的响应和显示的控制器操作,我猜您在您的
学生
中也有一个
的导航属性,这在您的帖子中没有提到。通过将
Find
替换为
SingleOrDefault
,您只能返回没有关联子数据的学生详细信息。使用
SingleOrDefault
,如果要包含相关实体,则需要明确地
。包含它们,否则将只返回指定实体的数据

public IHttpActionResult GetStudent(int id)
{
    Student student = db.Students.SingleOrDefault(x => x.StudentId == id);
    if (student == null)
    {
        return NotFound();
    }
    return Ok(student);
}

查看json有点让人困惑。是否包含代码文本中未包含的内容?如果是,则显示学生类查看json有点混乱。是否包含代码文本中未包含的内容?如果是,则显示学生课堂