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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Mischiare codice server side e client side in una query LINQ con Entity Framework
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Sfruttare una CDN con i bundle di ASP.NET
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform


