Извините, немного неправильно понял ваш вопрос, но я оставлю свои первоначальные комментарии
Помните, что хранимые процедуры возвращают набор результатов , а не значение;если не считать значение, возвращаемое в операторе return
.Поэтому вам нужен тип, чтобы обернуть возвращаемые столбцы и строки.
Вы можете изменить тип возвращаемого значения на таблицу, если вы знаете, что SP возвращает набор строк, который отображается на один из ваших типов таблиц.Но вы не сможете просто вернуть 'int'.
См. Эту ссылку: http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/1667a989-08a0-402c-9358-e4637406a75f (извините, на форумах MSDN все кончено - не SO: $) и связанная тема отhttp://msdn.microsoft.com/en-us/library/bb386975.aspx
Обновление
L2S использует эквивалент отражения SQL, чтобы выяснить, что SP возвращает для автоматической генерации результата.
Если SP не 't SELECT
, или если в нем содержится только RETURN
, вы получите базовый тип возврата int
для вашей отображенной функции.Подобные вещи могут произойти законно или ошибочно, если SP использует операторы IF
для разветвления и, соответственно, возврата различных результатов;L2S не может определить единственный тип возвращаемого значения, который может удовлетворить все возможные результаты, и поэтому он просто подходит для одного из них.
Как упоминает @JohnOpincar в своих комментариях, есть вопросительный знак о том,Вы разместили здесь на самом деле тот, который вы сопоставили - так как имена не совпадают?Я предполагаю, что вы перетащили не тот SP - и в нем есть только RETURN
, или он возвращает несколько вещей, и L2S потерпел неудачу.
Update 2
Хорошо -так что вы изменили имена в источнике.Моя рекомендация состоит в том, чтобы удалить SP из конструктора L2S (и любую другую ручную попытку, которую вы можете предпринять для этого SP), и снова перетащите его обратно из проводника сервера, убедившись, что это тот же сервер / db, с которого вы его перетащили.С помощью отправленного вами SQL, L2S определенно сможет выяснить, что такое набор результатов, поскольку он очень прост.