删除专业和删除年级类似。
在MajorRepo中添加GetWithClasses方法,代码如下:
public Major? GetWithClasses(Guid id)
{
return DbSet.Include(m => m.Classes).SingleOrDefault(m => m.Id == id);
}
在MajorService中添加Delete方法,代码如下:
public void Delete(Guid id)
{
Major? major = majorRepo.GetWithClasses(id);
if (major == null)
{
throw new NullReferenceException("未找到该专业,无法删除");
}
if (major.Classes.Any())
{
throw new InvalidOperationException("年级中存在班级,无法删除");
}
majorRepo.Delete(major);
}
在MajorController中添加Delete动作,代码如下:
public IActionResult Delete(Guid id)
{
try
{
majorService.Delete(id);
return Ok("删除成功");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
添加删除按钮和Delete函数,代码如下:
<button class="button is-danger" onclick="Delete('@major.Id')">删除</button>
@section Scripts {
<script>
function Delete(id) {
DeleteWithController(id, 'Major');
}
</script>
}