我有一個存儲過程,根據輸入,返回多個int整數行或多行DateTime。Linq To Sql:調用具有不同返回值的存儲過程
我看過的答案,this question和已經閱讀並實施從Handling Multiple Result Shapes from SPROCs斯科特Guthries溶液(向下滾動頁面看到,一節)。
不幸的是,它只是不工作。
這裏是我的代碼:
使用SQL Server Profiler,LINQ的2 SQL是生產代碼,看起來像這樣:
declare @p6 int
set @p6=0
exec sp_executesql N'EXEC @RETURN_VALUE = [FunkyStoredProcedure] @appId = @p0, @sId = @p1, @cId = @p2',N'@p0 int,@p1 int,@p2 int,@RETURN_VALUE int output',@p0=2,@p1=4,@p2=2,@[email protected] output
select @p6
其產生的結果集,看起來像這樣:
cId
-----------
694
42
43
41
4732
-----------
0
(1 row(s) affected)
請注意,這裏有兩個結果集(應該只有一個)。並注意到第二個結果集,返回LinqToSql的結果集爲0!
「exec sp_executesql ...」行生成第一個正確的結果集。
行「select @ p6」產生第二個不正確的結果集。
首先,爲什麼@ p6被定義爲int?在函數中,我有兩個可能的ResultTypes:List和List這看起來像是一個問題。
其次,它爲什麼不返回存儲過程的輸出?而是返回@ p6的值?
最後,最重要的是,我如何才能正確地工作?
我從IMultipleResults得到它,它總是與0 –
值這完全是一起工作的一個int。我只是沒有看到它。 –