EF nepodporuje import uložených procedur, které sestavují sadu výsledků z:
- Dynamické dotazy
- Dočasné stoly
Důvodem je, že pro import procedury musí ji EF provést . Taková operace může být nebezpečná, protože může vyvolat některé změny v databázi. Z tohoto důvodu EF používá speciální SQL příkaz před provedením uložené procedury:
SET FMTONLY ON
Spuštěním tohoto příkazu uložená procedura vrátí pouze "metadata" o sloupcích ve své výsledné sadě a neprovede svou logiku. Ale protože logika nebyla provedena, neexistuje žádná dočasná tabulka (nebo vytvořený dynamický dotaz), takže metadata neobsahují nic.
Máte dvě možnosti (kromě té, která vyžaduje přepsání uložené procedury, abyste tyto funkce nepoužívali):
- Definujte vrácený komplexní typ ručně (myslím, že by to mělo fungovat)
- Použijte hack a pouze pro přidání uložené procedury vložte na její začátek
SET FMTONLY OFF
. To umožní, aby zbytek kódu vašeho SP běžel běžným způsobem. Jen se ujistěte, že váš poskytovatel služeb nemění žádná data, protože tyto úpravy budou provedeny během importu! Po úspěšném importu tento hack odstraňte.