Как я могу получить этот вызов API только для возврата, когда Student_ID = ID, который я предоставляю - PullRequest
0 голосов
/ 28 апреля 2020

Я использую ASP. NET Core для запуска моего API через мой сервер Microsoft Management Studio SQL.

Как я могу получить этот запрос на получение, чтобы возвращать только те данные Student_ID, которые я предоставляю , Как видно ниже, это объект, который я получаю, когда вызываю этот GET: api / Grades, но я хочу, чтобы он отображался только тогда, когда мой Student_ID соответствует моему идентификатору.

    public IQueryable<Grade> GetGrades()
    {
        return db.Grades;
    }

    // GET: api/Grades/5
    [ResponseType(typeof(Grade))]
    public async Task<IHttpActionResult> GetGrade(int id)
    {
        Grade grade = await db.Grades.FindAsync(id);
        if (grade == null)
        {
            return NotFound();
        }

        return Ok(grade);
    }

enter image description here

enter image description here

1 Ответ

1 голос
/ 28 апреля 2020

Во-первых, согласно FindAsyn c документации , он возвращает сущность, которая имеет указанный первичный ключ.

Находит сущность с заданными значениями первичного ключа.

Я предполагаю , что ваш звонок выше, вероятно, возвращает оценку с "Grade_ID = 5".

Ваша вторая проблема, вероятно, заключается в том, что может быть несколько строк с оценками для ученика, но похоже, что вы пытаетесь вернуть только 1 Grade сущность.

Код, который вы, вероятно, захотите выполнить, будет выглядеть примерно так:

IEnumerable<Grade> grades = await db.Grades.Where((g) => g.Student_ID == id)
                                           .ToListAsync();
if (!grades.Any())
{
    return this.NotFound();
}

return this.Ok(grades);

.Where - это Linq , то есть , преобразованный в SQL запрос для возврата данных.
В целом, стоит ознакомиться с Linq потому что это невероятно полезно для работы с данными.

...