EF nie obsługuje importowania procedur składowanych, które budują zestaw wyników z:
- Zapytania dynamiczne
- Tabele tymczasowe
Powodem jest to, że aby zaimportować procedurę, EF musi ją wykonać . Taka operacja może być niebezpieczna, ponieważ może wywołać pewne zmiany w bazie danych. Z tego powodu EF używa specjalnego polecenia SQL przed wykonaniem procedury składowanej:
SET FMTONLY ON
Po wykonaniu tego polecenia procedura składowana zwróci tylko „metadane” dotyczące kolumn w swoim zestawie wyników i nie wykona swojej logiki. Ale ponieważ logika nie została wykonana, nie ma tabeli tymczasowej (ani wbudowanego dynamicznego zapytania), więc metadane nic nie zawierają.
Masz dwie możliwości (oprócz tej, która wymaga ponownego napisania procedury składowanej, aby nie używać tych funkcji):
- Zdefiniuj zwrócony typ złożony ręcznie (chyba powinno działać)
- Użyj hacka i tylko w celu dodania procedury składowanej umieść na jej początku
SET FMTONLY OFF
. Pozwoli to na normalne wykonanie reszty kodu SP. Tylko upewnij się, że Twój SP nie modyfikuje żadnych danych, ponieważ te modyfikacje zostaną wykonane podczas importu! Po udanym imporcie usuń ten hack.