LINQ问题,拖动存储过程返回int而不是Result

时间:2011-06-07 07:33:03

标签: linq-to-sql c#-2.0

这是存储过程。

    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 个答案:

答案 0 :(得分:1)

当我遇到这种情况时,取决于连接对存储过程的访问级别。如果您没有执行访问权限,它将返回一个整数,因为存储过程总是返回一个整数。

此外,它可能与在存储过程结束时没有SELECT语句有关,因为它使用这些语句来计算结果类型。

希望这有帮助