这是存储过程。
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行为为什么会发生这种情况?这太浪费我的时间了。
答案 0 :(得分:1)
当我遇到这种情况时,取决于连接对存储过程的访问级别。如果您没有执行访问权限,它将返回一个整数,因为存储过程总是返回一个整数。
此外,它可能与在存储过程结束时没有SELECT语句有关,因为它使用这些语句来计算结果类型。
希望这有帮助