2017-12-28 48 views
0

예를 들어 숫자 5와 같은 classID와 함께 모든 vragen (영어로 된 질문)을 삭제하려고합니다. vraagID와 classID를 부여 할 수 있으며 일치하는 경우 서버가 질문을 삭제합니다 . 하지만 하나의 요청으로 모든 일치하는 질문을 삭제하고 싶습니다. 이것이 가능한가?asp.net 코어 특정 번호가있는 모든 것을 삭제하십시오

namespace AspIdentityServer.data 
    { 
     public class Vraag :Conversatie 
     { 
      public int VraagID { get; set; } 
      public int classID { get; set; } 
      public string Titel { get; set; } 

      public ICollection<Antwoord> Antwoord { get; set; } 
      public Vak Vak { get; set; } 
     } 
    } 

-

 // DELETE: api/Vraags/1/alles/5 
       [AllowAnonymous] 
       [HttpDelete("{id}/alles/{vakID}")] 
       public async Task<IActionResult> DeleteAlleVragen([FromRoute] int id, int vakID) { 
        if (!ModelState.IsValid) 
        { 
         return BadRequest(ModelState); 
        } 
        var vraag = await _context.Vraag.SingleOrDefaultAsync(m => m.VraagID == id); 

        if (vraag.classID == vakID) 
        { 
         _context.Vraag.Remove(vraag); 
         await _context.SaveChangesAsync(); 
        } 
        return Ok(vraag); 
      } 

답변

0

당신은 항상 당신의 사용자 정의 SQL 쿼리를 실행하기 위해 ExecuteSqlCommandAsync 사용할 수 있습니다. 따라서 필요한만큼 많은 행을 처리 할 적절한 where 절을 사용하여 단일 delete 문을 작성하십시오. 필요에 따라 여기에

빠른 예를

object[] paramsArray = 
{ 
    new SqlParameter 
    { 
     ParameterName = "@vraagId", 
     SqlDbType = SqlDbType.Int, 
     Value = id 
    }, 
    new SqlParameter 
    { 
     ParameterName = "@classId", 
     SqlDbType = SqlDbType.Int, 
     Value = vakID 
    } 
}; 
const string q = "DELETE FROM VraagWHERE [email protected] and [email protected]"; 
await _context.Database.ExecuteSqlCommandAsync(q, paramsArray); 

업데이트는 SQL statemenets 및 매개 변수입니다.