Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Web API删除方法错误_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# ASP.NET Web API删除方法错误

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

使用带有实体框架的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
            .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
}