Eseguire comandi SQL dinamici con il metodo ExecuteCommand di LINQ To SQL

di Stefano Mostarda, in LINQ,

Il runtime di LINQ To SQL è in grado di generare dinamicamente le query di aggiornamento esaminando le modifiche fatte agli oggetti recuperati dal database.

Tuttavia, a volte questo non basta in quanto all'aggiornamento di una determinata tabella si dovrebbero aggiornare anche dati in un'altra. L'esempio più classico è quando si vogliono loggare determinate operazioni fatte dall'utente. Per fare questo, un trigger non sempre è la via percorribile e quindi si deve ricorrere al codice.

LINQ To SQL permette di inviare al server comandi SQL dinamici tramite il metodo ExecuteCommand della classe DataContext.

using (DataContext ctx = new DataContext(connString))
{
  ctx.ExecuteCommand("INSERT INTO log (iduser, action) " +
    "VALUES ({0}, {1})", iduser, action);
}

Come si vede dal codice, le query possono utilizzare parametri, ma con una sintassi diversa da quella utilizzata con gli oggetti di ADO.NET. La sintassi ricalca quella del metodo String.Format, ma, a differenza di questo, LINQ To SQL non effettua un semplice replace delle stringhe, bensì genera dei parametri per evitare problemi di SQL Injection.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi