2017-12-12 15 views
3

エンティティフレームワークでASP.NET Web API DELETEメソッドを使用して生徒IDを渡し、IDがテーブルに存在する場合はレコードを削除します。テストしようとすると、次のエラーメッセージが表示されます。ASP.NET Web API DELETEメソッドのエラー

"System.Data.Entity.Utilities.Check.NotNull [T](T value、String parameterName)System.Data.Entity.DbContext.Entry [TEntity ](TEntity実体)」

public class StudentController : ApiController 
{ 
    [HttpDelete] 
    [Route("student/DeleteStudent/{id}")] 

    public IHttpActionResult DeleteStudent(string id) 
    { 
     using (var sd = new SchoolDBEntities()) 
     { 
      var student = sd.Students 
       .Where(s => s.StudentID == id) 
       .FirstOrDefault(); 

      sd.Entry(student).State = System.Data.Entity.EntityState.Deleted; 
      sd.SaveChanges(); 
     } 
     if (id == null) 
     return BadRequest("Not a valid student id"); 

     return Ok(); 
    } 
} 
+0

削除操作を実行する前に、(ID == null)を完了する必要があるかどうかを確認してください... –

+0

受け入れてください –

答えて

2

あなたはその学生が存在しているチェックする必要があります。

 var student = sd.Students 
      .Where(s => s.StudentID == id) 
      .FirstOrDefault(); 
     if (student != null) 
     { 
      sd.Entry(student).State = System.Data.Entity.EntityState.Deleted; 
      sd.SaveChanges(); 
     } 
1

別のものは、それはまた、あなたの問題をレゾールなりますように、コード

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(); 
} 

の下にチェックすることができる第1の方法は、高速あなたの場合にはそうできないので、ヌルIDのchckする必要があります付属しています1人の学生だけがIDを持っていることを期待しています。IDは となりますので、SingleOrDeault()を使用してください。FirstOrDefault()を使用しないでください。同じIDを持つ生徒がいないため

var student = sd.Students 
      .Where(s => s.StudentID == id) 
      .SingleOrDeault(); 
if(student!=null) 
{ 
    //perform operation 
}