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
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Change tracking e composition in Entity Framework
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi