Z EF4, możliwe jest uzyskanie wygenerowanego SQL dla aktualizacji/wstawek, zamiast wykonywania go ... tak, jak można wyświetlić zapytanie SQL przed uruchomieniem.Entity Framework 4 - Uzyskaj wygenerowany SQL dla aktualizacji/wkładek
Powód jest taki, że mam zestaw funkcji pomocniczych, które wykonują polecenia SQL. Na przykład ...
Decrement<Category>("ProductCount", categoryID);
SetNull<Product>("CategoryID", productID);
który generuje ...
UPDATE Categories
SET ProductCount = ProductCount - 1
WHERE CategoryID = @CategoryID;
UPDATE Products
SET CategoryID = NULL
WHERE CategoryID = @ProductID;
zwykle uruchomić kilka poleceń na pracy, więc przy każdym wywołaniu funkcji pomocnika, SQL są generowane i przechowywane. Kiedy wołam SaveChanges(), wszystkie polecenia są uruchamiane JEDNEGO razu.
Jedynym problemem jest to, że EF uruchamia swoje komendy oddzielnie za kulisami, a potem uruchamiam pozostałe. Idealnie byłoby uruchomić wszystko jako jedno polecenie.
Dzięki za tę odpowiedź, ale nie do końca to, czego potrzebuję. Po wstawieniu nowego obiektu lub pobraniu, a następnie aktualizacji istniejącego obiektu, muszę uzyskać SQL, który zostanie wygenerowany dla tych operacji. Nie mogę uzyskać obiektu EntityCommand z ObjectContext. –
Tak więc jesteśmy jasne, czy próbujesz uzyskać go w czasie wykonywania, lub czas projektowania? To znaczy, czy próbujesz go zdobyć tylko raz, abyś mógł napisać proc, czy też musisz go jakoś zużyć w czasie wykonywania? –
W czasie wykonywania. Chcę zasadniczo uzyskać wygenerowany SQL INSERT/UPDATE przed jego wykonaniem, połączyć go z własnymi instrukcjami, a następnie uruchomić wszystkie instrukcje jako jedno polecenie. –