我应该以这种方法返回什么才能获得部门和部门中存在的学生名单?

我已经实现了一个由两个实体Student和Department组成的核心网络api,并实现了一对多关系,即一个Department可以有多个学生。

我创建了一个名为 DepartmentStudentsresponse

的响应模型

DepartmentStudentsresponse.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Students.Models
{
    public class DepartmentStudentsresponse
    {
        public Department department { get; set; }
        public List<Student> students { get; set; }
    }
}

我想实现 GetStudents(int id)方法,在该方法中将提供特定的部门ID,并且应该返回其中包含listOfstudents的部门。

GetStudents(int id)方法中,departmentStudents.department = department.Result;departmentStudents.students = listOfStudents.Result;为什么需要.Result?没有.Result,我该如何实现呢?

DeparmentController.cs GetStudents(int id)

[HttpGet("{id}")]
//[Route("DepartmentWithStudent")]
public async Task<actionResult<Student>> GetStudents(int id)
{
    DepartmentStudentsresponse departmentStudents = new DepartmentStudentsresponse();

    var department =  _context.Departments.FindAsync(id);
    if (department != null)
    {
        departmentStudents.department = department.Result;

        var listOfStudents = _context.Students.Where(x => x.DepartmentId == id).ToListAsync();
        departmentStudents.students = listOfStudents.Result;
        //return departmentStudents;
    }
    else
    {
        return NotFound();
    }
 }
chen_004488 回答:我应该以这种方法返回什么才能获得部门和部门中存在的学生名单?

到目前为止,满足您要求的所有内容都显示在所示方法中。需要进行一些更改才能使其正常运行。

  • 您不需要使用.Result

    将异步等待与.Result之类的阻塞调用混合会导致死锁。这些异步调用应等待。

  • 操作的返回类型必须与所需的类型匹配。

  • 为该操作使用适当的唯一路由模板,以避免路由冲突。

例如

[Route("api/[controller]")]
[ApiController]
public class DepartmentController : ControllerBase {

    //...

    //GET api/department/5/students
    [HttpGet("{id:int}/students")]     
    public async Task<ActionResult<DepartmentStudentsResponse>> GetStudents(int id) {
        var department =  await _context.Departments.FindAsync(id);
        if (department == null)
            return NotFound();

        DepartmentStudentsResponse departmentStudents = new DepartmentStudentsResponse() {
            department = department
        };
        var listOfStudents = await _context.Students.Where(x => x.DepartmentId == id).ToListAsync();
        departmentStudents.students = listOfStudents;
        return departmentStudents;            
     }
}
本文链接:https://www.f2er.com/2973396.html

大家都在问