EF не поддържа импортиране на съхранени процедури, които изграждат набор от резултати от:
- Динамични заявки
- Временни таблици
Причината е, че за импортиране на процедурата EF трябва да я изпълни . Такава операция може да бъде опасна, защото може да предизвика някои промени в базата данни. Поради това EF използва специална SQL команда, преди да изпълни съхранената процедура:
SET FMTONLY ON
Изпълнявайки тази команда, съхранената процедура ще върне само "метаданни" за колоните в своя набор от резултати и няма да изпълни своята логика. Но тъй като логиката не е изпълнена, няма временна таблица (или изградена динамична заявка), така че метаданните не съдържат нищо.
Имате два избора (освен този, който изисква пренаписване на вашата съхранена процедура, за да не използвате тези функции):
- Дефинирайте ръчно върнатия комплексен тип (предполагам, че трябва да работи)
- Използвайте хак и само за добавяне на съхранената процедура поставете в началото й
SET FMTONLY OFF
. Това ще позволи на останалата част от вашия SP код да се изпълни по нормален начин. Просто се уверете, че вашият SP не променя никакви данни, защото тези модификации ще бъдат изпълнени по време на импортиране! След успешно импортиране премахнете този хак.