Ecco il codice che sto usando:
public async Task<IHttpActionResult> NewTopicTests([FromBody] NewTopicTestsDTO testSpec)
{
var sql = @"dbo.sp_new_topic_tests @Chunk";
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@Chunk", testSpec.Chunk)
};
int result = db.Database.ExecuteSqlCommand(sql, parameters);
await db.SaveChangesAsync();
return Ok();
}
Qualcuno può confermare se questo è il modo corretto per farlo usando async? In particolare devo fare questo:
int result = db.Database.ExecuteSqlCommand(sql, parameters);
await db.SaveChangesAsync();
Si noti che il codice funziona, tuttavia, sto avendo un problema con la mia applicazione in cui si interrompe improvvisamente senza alcun messaggio di errore. Sto esaminando ogni possibile problema.
Cosa viene salvato qui? Penso che non ci sia bisogno di chiamare salvare le modifiche qui.
Rimuovi le modifiche di salvataggio e vedrai lo stesso comportamento, poiché tutte le modifiche apportate alla stored procedure non sono tracciate dal contesto della struttura dell'entità.
E puoi riscrivere il tuo codice come segue:
int result = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
Hai controllato ogni dove trovare la ragione del tuo problema? Registro errori di Windows, ecc.?
Vai al menu Debug di Visual Studio IDE e apri le eccezioni, quindi controlla sia 'throw' che 'user_unhandled' per 'Common Language Runtime Exceptions' e prova nuovamente il tuo codice.