EF unterstützt nicht das Importieren gespeicherter Prozeduren, die Ergebnissätze erstellen aus:
- Dynamische Abfragen
- Temporäre Tabellen
Der Grund dafür ist, dass zum Importieren der Prozedur EF sie ausführen muss . Eine solche Operation kann gefährlich sein, da sie einige Änderungen in der Datenbank auslösen kann. Aus diesem Grund verwendet EF einen speziellen SQL-Befehl, bevor es die gespeicherte Prozedur ausführt:
SET FMTONLY ON
Durch Ausführen dieses Befehls gibt die gespeicherte Prozedur nur "Metadaten" über Spalten in ihrer Ergebnismenge zurück und führt ihre Logik nicht aus. Da die Logik jedoch nicht ausgeführt wurde, gibt es keine temporäre Tabelle (oder erstellte dynamische Abfrage), sodass Metadaten nichts enthalten.
Sie haben zwei Möglichkeiten (mit Ausnahme derjenigen, bei der Ihre gespeicherte Prozedur neu geschrieben werden muss, um diese Funktionen nicht zu verwenden):
- Definieren Sie den zurückgegebenen komplexen Typ manuell (ich denke, es sollte funktionieren)
- Verwenden Sie einen Hack und nur zum Hinzufügen der gespeicherten Prozedur, die an den Anfang gestellt wird
SET FMTONLY OFF
. Dadurch kann der restliche Code Ihres SP normal ausgeführt werden. Stellen Sie nur sicher, dass Ihr SP keine Daten ändert, da diese Änderungen während des Imports ausgeführt werden! Entfernen Sie nach erfolgreichem Import diesen Hack.