Con EF4, è possibile ottenere l'SQL generato per Aggiornamenti/Inserti anziché eseguirlo ... proprio come è possibile visualizzare la query SQL prima dell'esecuzione.Entity Framework 4 - Ottieni SQL generato per aggiornamenti/inserti
Il motivo è, ho un set di funzioni di supporto che eseguono comandi SQL. Per esempio ...
Decrement<Category>("ProductCount", categoryID);
SetNull<Product>("CategoryID", productID);
che genera ...
UPDATE Categories
SET ProductCount = ProductCount - 1
WHERE CategoryID = @CategoryID;
UPDATE Products
SET CategoryID = NULL
WHERE CategoryID = @ProductID;
Io di solito eseguire diversi comandi per il funzionamento, quindi con ogni chiamata funzione di supporto, l'SQL viene generato e memorizzato. Quando chiamo SaveChanges(), tutti i comandi vengono eseguiti una volta sola.
L'unico problema è che EF esegue i suoi comandi separatamente dietro le quinte, quindi eseguo gli altri subito dopo. Sarebbe l'ideale per eseguire tutto come un unico comando.
Grazie per questa risposta, ma non è proprio quello di cui ho bisogno. Dopo aver inserito un nuovo oggetto o recuperato e poi aggiornato un oggetto esistente, ho bisogno di ottenere l'SQL che viene generato per queste operazioni. Non riesco a ottenere un oggetto EntityCommand da ObjectContext. –
Solo così siamo chiari, stai cercando di ottenerlo in fase di esecuzione o in fase di progettazione? Cioè, stai cercando di ottenerlo solo una volta in modo che tu possa scrivere un proc o hai bisogno di consumarlo in qualche modo in fase di runtime? –
In fase di esecuzione. Voglio fondamentalmente ottenere l'SQL INSERT/UPDATE generato prima che venga eseguito, combinarlo con le mie stesse affermazioni, quindi eseguire tutte le istruzioni come un unico comando. –