EF understøtter ikke import af lagrede procedurer, som bygger resultatsæt fra:
- Dynamiske forespørgsler
- Midlertidige tabeller
Årsagen er, at for at importere proceduren skal EF udføre den . En sådan operation kan være farlig, fordi den kan udløse nogle ændringer i databasen. På grund af det bruger EF en speciel SQL-kommando, før den udfører den lagrede procedure:
SET FMTONLY ON
Ved at udføre denne kommando vil den lagrede procedure kun returnere "metadata" om kolonner i dens resultatsæt, og den vil ikke udføre sin logik. Men fordi logikken ikke blev udført, er der ingen midlertidig tabel (eller bygget dynamisk forespørgsel), så metadata indeholder intet.
Du har to valgmuligheder (undtagen den, der kræver omskrivning af din lagrede procedure for ikke at bruge disse funktioner):
- Definer den returnerede komplekse type manuelt (det burde vel virke)
- Brug et hack og kun til at tilføje den lagrede procedure sat i begyndelsen
SET FMTONLY OFF
. Dette vil tillade resten af din SP's kode at køre på normal måde. Bare sørg for, at din SP ikke ændrer nogen data, fordi disse ændringer vil blive udført under import! Fjern hacket efter vellykket import.