EF biedt geen ondersteuning voor het importeren van opgeslagen procedures die een resultaatset bouwen van:
- Dynamische zoekopdrachten
- Tijdelijke tabellen
De reden is dat om de procedure te importeren EF deze moet uitvoeren . Een dergelijke operatie kan gevaarlijk zijn omdat het enkele wijzigingen in de database kan veroorzaken. Daarom gebruikt EF een speciaal SQL-commando voordat het de opgeslagen procedure uitvoert:
SET FMTONLY ON
Door deze opdracht uit te voeren, zal de opgeslagen procedure alleen "metadata" over kolommen in zijn resultatenset retourneren en zal zijn logica niet uitvoeren. Maar omdat de logica niet is uitgevoerd, is er geen tijdelijke tabel (of ingebouwde dynamische query), dus metagegevens bevatten niets.
Je hebt twee keuzes (behalve degene die je opgeslagen procedure opnieuw moet schrijven om deze functies niet te gebruiken):
- Definieer het geretourneerde complexe type handmatig (ik denk dat het zou moeten werken)
- Gebruik een hack en voor het toevoegen van de opgeslagen procedure aan het begin
SET FMTONLY OFF
. Hierdoor kan de rest van de code van uw SP op de normale manier worden uitgevoerd. Zorg er wel voor dat uw SP geen gegevens wijzigt, want deze wijzigingen worden uitgevoerd tijdens het importeren! Verwijder die hack na succesvolle import.