同样,删除年级时需要考虑年级中是否存在班级。
在GradeRepo中添加GetWithClasses方法,代码如下:
public Grade? GetWithClasses(Guid id)
{
return DbSet.Include(g => g.Classes).SingleOrDefault(g => g.Id == id);
}
在GradeService中添加Delete方法,代码如下:
public void Delete(Guid id)
{
Grade? grade = gradeRepo.GetWithClasses(id);
if (grade == null)
{
throw new NullReferenceException("未找到该年级,无法删除");
}
if (grade.Classes.Any())
{
throw new InvalidOperationException("年级中存在班级,无法删除");
}
gradeRepo.Delete(grade);
}
在GradeController中添加Delete动作,代码如下:
public IActionResult Delete(Guid id)
{
try
{
gradeService.Delete(id);
return Ok("删除成功");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
添加删除按钮和Delete函数,代码如下:
<button class="button is-danger" onclick="Delete('@grade.Id')">删除</button>
@section Scripts {
<script>
function Delete(id) {
DeleteWithController(id, 'Grade');
}
</script>
}