Я также видел эту проблему несколько раз, и хотя я не знаю, что ее вызывает, я наткнулся на довольно простой способ ее преодоления. Он включает ручное редактирование xml в файле .dbml, но это довольно простое редактирование.
Щелкните правой кнопкой мыши файл .dbml
вашего контекста данных в обозревателе решений (не файл .layout или файл designer.cs) и откройте его с помощью редактора XML. Вы должны найти свою хранимую процедуру в списке <Function> ... </Function>
. Вы также должны найти пользовательский класс, который вы хотите установить в качестве Типа возврата, указанного в блоке <Type> ... </Type>
.
Шаг первый - присвоить вашему пользовательскому классу идентификатор. Это можно сделать, добавив тег «Id», например, чтобы убедиться, что он уникален в файле dbml:
<Type Name="MyCustomClass" Id="ID1">
Шаг второй - указать вашей функции использовать новый тип идентификатора в качестве возвращаемого типа. Вы делаете это путем замены строки в вашем блоке <Function>
, которая выглядит как
<Return Type="System.Int32" />
с
<ElementType IdRef="ID1" />
Сохраните файл, выйдите и восстановите. Готово. Снова откройте файл .dbml в режиме конструктора, чтобы убедиться, что в вашей процедуре для настраиваемого класса задан тип возвращаемого значения.