LINQ Issue, перетаскивание хранимой процедуры возвращает int, а не Result - PullRequest
1 голос
/ 07 июня 2011

Это хранимая процедура.

ALTER PROCEDURE [dbo].[UserSearch]
(
)
AS
    SET NOCOUNT ON

DECLARE @temp TABLE
(
    Id              INT,
    UserName        INT,
    StatusId        INT
)

INSERT INTO @temp
SELECT userId, userName, statusId FROM [User]

SELECT  UserId,
        COUNT(ISNULL(StatusId, 0)) AS UserCount,
        StatusTypeName
FROM  @temp
GROUP BY StatusTypeId, StatusTypeName

Когда я запускаю эту программу, она работает нормально.Вчера, когда я перетаскиваю эту хранимую процедуру на панель методов в файле dbml, она не создает класс UserSearchResult и возвращает int, а не ISingleResult.Но сегодня утром я снова перетащил его, и теперь он создал класс и также возвращает ISingleResult, что правильно.Но я слишком сильно путаюсь с поведением linq, почему это происходит?Это тратит слишком много времени.

1 Ответ

1 голос
/ 07 июня 2011

Когда это произойдет со мной, зависит от уровня доступа, который соединение имеет в хранимой процедуре. Если у вас нет доступа к выполнению, он вернет целое число, потому что хранимая процедура всегда возвращает целое число.

Также это может быть связано с отсутствием оператора (ов) SELECT в конце вашей хранимой процедуры, потому что он использует эти операторы для определения типов результата.

Надеюсь, это поможет

...