2017-12-28 17 views
0

たとえば、番号5のclassIDを持つすべてのvragen(英語の質問)を削除したい場合は、vraagIDとclassIDを指定することができます。 。しかし、私は1つの要求で一致するすべての質問を削除したい。これは可能ですか?asp.net core特定の番号を持つものをすべて削除する

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とパラメータを更新します簡単な例です。

関連する問題