Con EF4, es posible obtener el SQL generado para las actualizaciones/inserciones en lugar de ejecutarlo ... al igual que se puede ver la consulta SQL antes de ejecutarla.Entity Framework 4 - Obtener SQL generado para actualizaciones/inserciones
La razón es que tengo un conjunto de funciones auxiliares que ejecutan comandos SQL. Por ejemplo ...
Decrement<Category>("ProductCount", categoryID);
SetNull<Product>("CategoryID", productID);
que genera ...
UPDATE Categories
SET ProductCount = ProductCount - 1
WHERE CategoryID = @CategoryID;
UPDATE Products
SET CategoryID = NULL
WHERE CategoryID = @ProductID;
suelo ejecutar varios comandos por operación, por lo que con cada llamada de función auxiliar, se genera el SQL y se almacena. Cuando llamo SaveChanges(), todos los comandos se ejecutan al mismo tiempo.
El único problema es que EF ejecuta sus comandos por separado detrás de las escenas, luego yo corro los otros justo después. Sería ideal ejecutar todo como un solo comando.
Gracias por esta respuesta, pero no es exactamente lo que necesito. Después de insertar un nuevo objeto o recuperar y luego actualizar un objeto existente, necesito obtener el SQL que se genera para estas operaciones. No puedo obtener un objeto EntityCommand del ObjectContext. –
Para que quede claro, ¿está tratando de obtenerlo en tiempo de ejecución o en tiempo de diseño? Es decir, ¿está tratando de obtenerlo solo una vez para que pueda escribir un proceso, o necesita consumirlo de alguna manera en tiempo de ejecución? –
en tiempo de ejecución. Básicamente quiero obtener el SQL INSERT/UPDATE generado antes de que se ejecute, combinarlo con mis propios enunciados, luego ejecutar todas las declaraciones como un solo comando. –