我没有从存储过程中获得正确的结果

时间:2012-08-29 16:13:38

标签: c# linq stored-procedures

我有这个用来从3个表中获得金额总和的程序。

问题是我正在使用Linq到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 个答案:

答案 0 :(得分:0)

您应该只能对值(.ToList()实现ISingleResult)使用IEnumerable到调用代码行,然后您可以获得单独的结果集从sproc返回。

例如

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