C# ASP.NET Web API删除方法错误
使用带有实体框架的ASP.NET Web API DELETE方法传递学生id,如果该id存在于表中,则删除记录。当我尝试测试它时,我得到以下错误消息 System.Data.Entity.Utilities.Check.NotNull[T](T值,字符串参数名称)System.Data.Entity.DbContext.Entry[TEntity](TEntity Entity)C# ASP.NET Web API删除方法错误,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,使用带有实体框架的ASP.NET Web API DELETE方法传递学生id,如果该id存在于表中,则删除记录。当我尝试测试它时,我得到以下错误消息 System.Data.Entity.Utilities.Check.NotNull[T](T值,字符串参数名称)System.Data.Entity.DbContext.Entry[TEntity](TEntity Entity) 你应该检查学生是否存在 var student = sd.Students
你应该检查学生是否存在
var student = sd.Students
.Where(s => s.StudentID == id)
.FirstOrDefault();
if (student != null)
{
sd.Entry(student).State = System.Data.Entity.EntityState.Deleted;
sd.SaveChanges();
}
另一件事是方法应该是快速失败,所以在你们的情况下,空id的chck首先出现,这也可以解决你们的问题,检查下面的代码
public IHttpActionResult DeleteStudent(string id)
{
if (id == null)
return BadRequest("Not a valid student id");
var student = sd.Students
.Where(s => s.StudentID == id)
.SingleOrDeault();
if(student!=null)
{
//perform operation
}
return Ok();
}
因为你希望只有一个学生有身份证,因为身份证是钥匙 这是一个增量数字,超出了您应该使用的
SingleOrDeault()
,请勿使用FirstOrDefault()
,因为不能有更多的学生具有相同的id
var student = sd.Students
.Where(s => s.StudentID == id)
.SingleOrDeault();
if(student!=null)
{
//perform operation
}
如果在执行删除操作之前需要执行(id==null)操作,请检查我的答案…请确实接受/向上投票回答它对您有效
var student = sd.Students
.Where(s => s.StudentID == id)
.SingleOrDeault();
if(student!=null)
{
//perform operation
}