Se la vostra logica è complessa ed avete bisogno di usare una SP per la persistenza, potete specificare tre azioni in grado di essere invocate in maniera automatica all?interno del DataContext. Questo è possibile grazie ai Partial Method che possono essere modificati poichè il DataContext è contenuto in una partial class.
La forma dei metodi è UpdateNomeEntity per l'aggiornamento, DeleteNomeEntity per la cancellazione e InsertNomeEntity per l'inserimento. Di seguito un esempio che esegue una SP in concomitanza con l'aggiornamento dell'Entity Product mappata sull'omonima tabella del database Northwind:
public partial class Northwind : DataContext
{
public partial void UpdateProduct(Product original, Product current)
{
if (original.UnitsInStock != current.UnitsInStock) {
int rowCount = this.ExecuteCommand("exec UpdateProductStock
@id={0}, @originalUnits={1}, @decrement={2}",
original.ProductID,
original.UnitsInStock,
(original.UnitsInStock - current.UnitsInStock)
);
if (rowCount < 1)
throw new Exception("Error updating");
}
}
}E' possibile eseguire codice arbitrario e controllare, come nell'esempio, che l'operazione vada a buon fine, scatenando un'eccezione in caso contrario.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Mischiare codice server side e client side in una query LINQ con Entity Framework
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


