2011-06-07 61 views
1

這是存儲過程。LINQ問題,拖動存儲過程返回int而不是結果

 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

發生這種情況時,取決於連接對存儲過程的訪問級別。如果您沒有執行權限,它將返回一個整數,因爲存儲過程總是返回一個整數。

此外,它可能與您的存儲過程結束時沒有SELECT語句有關,因爲它使用這些語句來計算結果類型。

希望這會有所幫助