2012-08-29 49 views
1

我有這個存儲過程,我用它從3個表中獲得金額的總和。我不會從存儲過程中獲得正確的結果

的問題是,我使用LINQ to SQL和當我把這個過程對我的.dbml文件,它有一個 ISingleResult(GetSurplusDataForConsolidationReportResult),我無法得到我想要的款項。

我收到一個空的ReceivablesSurplus列表。

任何想法?

ALTER PROCEDURE [dbo].[GetSurplusDataForConsolidationReport] 
    @ID INT 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

      SELECT SUM(RB.[Amount]) 
    FROM [DBO].[ReceivablesSurplus] RB 
    WHERE RB.[Cycle] = @ID 

    SELECT SUM(DL.[Amount]) 
    FROM [DBO].[DilutionsSurplus] DL 
    WHERE DL.[Cycle] = @ID 

    SELECT SUM(AC.[Amount]) 
    FROM [DBO].[AccountablesSurplus] AC 
    WHERE AC.[Cycle] = @ID 
END 

這是我的.dbml代碼

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.GetSurplusDataForConsolidationReport")] 
     public ISingleResult<GetSurplusDataForConsolidationReportResult> GetSurplusDataForConsolidationReport([global::System.Data.Linq.Mapping.ParameterAttribute(Name="ID", DbType="Int")] System.Nullable<int> iD) 
     { 
      IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), iD); 
      return ((ISingleResult<GetSurplusDataForConsolidationReportResult>)(result.ReturnValue)); 
     } 
+1

你能看到它運行的SQL? –

+0

是獨立運行時給出正確結果的sproc嗎? – AnandPhadke

+0

@AnandPhadke是的,它給出了我想要的結果。 –

回答

0

你應該只能夠使用.ToList()上的值(如ISingleResult工具IEnumerable)到代碼的調用行,然後你可以得到從sproc返回的單獨結果集。

e.g

var results = dataContext.GetSurplusDataForConsolidationReport(123).ToList<int>(); // list of sums