sql >> Database teknologi >  >> RDS >> Sqlserver

EF4 - Den valgte lagrede procedure returnerer ingen kolonner

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.


  1. java.lang.UnsatisfiedLinkError:ingen ocijdbc11 i java. bibliotek.sti

  2. Sådan opretter du en tabel i SQL – Postgres og MySQL Eksempelforespørgsel

  3. Sådan forbinder du Python til SQL Server for at automatisere backend-processen

  4. Brug af GO i en transaktion