2017-12-28 9 views
0

Ich möchte alle Fragen (Fragen in Englisch) mit der classID für Beispiel Nummer 5 löschen. Es ist möglich, eine vraagID und eine classID geben und der Server löscht die Frage, wenn es übereinstimmt . Aber ich möchte alle passenden Fragen mit nur einer Anfrage löschen. Ist das möglich?asp.net core löschen alles mit einer bestimmten Nummer

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

Antwort

0

können Sie immer die ExecuteSqlCommandAsync verwenden Ihre benutzerdefinierten SQL-Abfragen auszuführen. Schreiben Sie also eine einzelne delete-Anweisung mit der entsprechenden where-Klausel, die bei Bedarf viele Zeilen behandelt.

Hier ist ein kurzes Beispiel

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

Aktualisieren Sie die SQL statemenets und Parameter nach Bedarf.

Verwandte Themen