我在Postman工作,我是一个完全的初学者,目前正在学习数据库工作。我已经创建了一个带有小型本地数据库的Web API,并使用C#和Entity Framework填充了我想要的数据。所有的Postman请求都按照设计工作,除了PUT和DELETE请求。在那里我得到了错误信息(405关于put和500关于delete)。我怀疑这些都与同一个问题有关,即我正在使用组合键。
另一方面,500表示我使用的是组合键,而且我只输入一个值。我选择组合键是因为两个表之间存在多对多关系,但是我如何将其输入到删除请求中呢?是否有方法可以格式化此请求的URL(因为如果我在删除请求的主体中放置任何内容,我会不断收到错误405方法不允许)?
我肯定我错过了一些非常明显的东西,因为这感觉不应该那么复杂,但我找不到一个类似的问题已经被问到。
编辑:
代码非常基本,不确定它对问题有什么影响,它看起来像这样;
{
public int StudentId { get; set; }
public int CourseId { get; set; }
public Student Student { get; set; }
public Course Course { get; set; }
}
StudentId和CourseId组成了一个复合主键,我正在尝试删除StudentCourse类的一个对象。建议/需要的请求URL是:/API/StudentCourses/{id},我不知道如何输入,因为它是一个组合键。
HttpDelete操作看起来像这样,请注意,这是自动生成的,我完全可以看到它不起作用,因为StudentCourses没有任何要查找的ID,因此FindAsync永远不会通过,因为它不会找到任何东西。
话虽如此,我不知道如何解决这个问题,因为操作本身只要求一个整数,这意味着Postman认识到,在它到达这里之前,我需要主键的更多部分。
public async Task<IActionResult> DeleteStudentCourse(int id)
{
var studentCourse = await _context.StudentCourses.FindAsync(id);
if (studentCourse == null)
{
return NotFound();
}
_context.StudentCourses.Remove(studentCourse);
await _context.SaveChangesAsync();
return NoContent();
}
private bool StudentCourseExists(int id)
{
return _context.StudentCourses.Any(e => e.StudentId == id);
}
1条答案
按热度按时间ylamdve61#
假设ID是学生ID,并且您正在尝试删除此学生的所有StudentCourse记录
建议的url