С помощью EF4 можно получить сгенерированный SQL для обновлений / вставок, а не выполнять его ... точно так же, как вы можете просмотреть запрос SQL перед его выполнением.
Причина в том, что у меня есть набор вспомогательных функций, которые выполняют команды SQL. Например ...
Decrement<Category>("ProductCount", categoryID);
SetNull<Product>("CategoryID", productID);
Который порождает ...
UPDATE Categories
SET ProductCount = ProductCount - 1
WHERE CategoryID = @CategoryID;
UPDATE Products
SET CategoryID = NULL
WHERE CategoryID = @ProductID;
Обычно я запускаю несколько команд для каждой операции, поэтому при каждом вызове вспомогательной функции SQL генерируется и сохраняется. Когда я вызываю SaveChanges (), все команды выполняются в ОДИН раз.
Единственная проблема в том, что EF запускает свои команды отдельно за кулисами, а потом я запускаю остальные сразу. Было бы идеально запускать все как одну команду.