LINQ:正在执行存储过程,但跳过其中的游标

LINQ:正在执行存储过程,但跳过其中的游标,linq,stored-procedures,cursor,Linq,Stored Procedures,Cursor,我正在做一个不可靠的数据项目(C#/LINQ/mssql)。我收到一个格式非常糟糕的数据集,我正在用这些数据构建一些有意义的报告。对于其中一个报告(“SwitchFlow”),我创建了一个名为“SwitchFlowGenerate”的存储过程。它需要两个参数,报告日期和来源公司 在存储过程的最后,我使用游标(uck)循环遍历数据以生成客户计数字段值 当我在ManagementStudio中运行存储过程时,它可以100%工作。当我将存储的进程存储到LINQ to SQL并从Visual Studi

我正在做一个不可靠的数据项目(C#/LINQ/mssql)。我收到一个格式非常糟糕的数据集,我正在用这些数据构建一些有意义的报告。对于其中一个报告(“SwitchFlow”),我创建了一个名为“SwitchFlowGenerate”的存储过程。它需要两个参数,报告日期和来源公司

在存储过程的最后,我使用游标(uck)循环遍历数据以生成客户计数字段值

当我在ManagementStudio中运行存储过程时,它可以100%工作。当我将存储的进程存储到LINQ to SQL并从Visual Studio C#控制台应用程序调用它时,它无法完全工作

在我的应用程序中,存储的过程“SwitchFlowGenerate”按其应有的方式填充报告表,不返回任何错误代码(在调试或生产中),但它似乎不执行存储过程的游标部分(将customer count字段保留为零)

我从MS SQL Management Studio调用存储的进程,如下所示:

exec switchflowgenerate'03-13-2012','ace'

从C#/LINQ我这样称呼它:

db.SwitchFlowGenerate(DateTime.Now,ldc)

(注意:。现在与MSMS中的上述内容相同)

代码的光标部分如下所示:

**--更新“客户计数”列以反映帐户切换的移动

DECLARE @Adjust INT

SET @Adjust = 0

DECLARE @cc nvarchar(100)

DECLARE @stat nvarchar(100)

DECLARE SFC CURSOR FOR SELECT CustomerCount, [Status] FROM SwitchFlow WHERE ReportDate = @rptDate AND LDC = @ldc FOR UPDATE

OPEN SFC

FETCH SFC INTO @cc, @stat

WHILE (@@FETCH_STATUS = 0)

    BEGIN

        IF @stat = 'Dropped' BEGIN SET @Adjust = -1 END

        IF @stat = 'Start' BEGIN SET @Adjust = 1 END

        IF @stat = 'In Queue - To Start' BEGIN SET @Adjust = 1 END

        IF @stat = 'In Queue - To Drop' BEGIN SET @Adjust = -1 END

        IF @stat = 'Reenrolling' BEGIN SET @Adjust = 1 END

        IF @stat = '#### SAME DAY ####' BEGIN SET @Adjust = 0 END


        SET @@StartingTotal = @@StartingTotal + @Adjust


        UPDATE [SwitchFlow] SET CustomerCount = @@StartingTotal WHERE CURRENT OF SFC

        FETCH SFC INTO @cc, @stat


    END

CLOSE SFC

DEALLOCATE SFC**

    Linq generates:
    Generating Data For: ACE on 3/13/2012

    EXEC @RETURN_VALUE = [dbo].[SwitchFlowGenerate] @rptDate = @p0, @ldc = @p1

    -- @p0: Input DateTime (Size = -1; Prec = 0; Scale = 0) [3/13/2012 9:56:59 AM]

    -- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [ACE]

    -- @RETURN_VALUE: Output Int (Size = -1; Prec = 0; Scale = 0) [Null]

    -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
任何帮助或见解都将不胜感激,特别是如果有人知道如何在没有光标的情况下实现这一点

谢谢!!
TK

Linq到SQL对存储过程代码的翻译是什么样子的?您也可以尝试使用WHILE循环来代替游标。[global::System.Data.Linq.Mapping.FunctionAttribute(Name=“dbo.SwitchFlowGenerate”)]public int-SwitchFlowGenerate([global::System.Data.Linq.Mapping.ParameterAttribute(DbType=“DateTime”)]System.null rptDate,[global::System.Data.Linq.Mapping.ParameterAttribute(DbType=“NVarChar(10)”]字符串ldc){IExecuteResult result=this.ExecuteMethodCall(this,((MethodInfo)(MethodInfo.GetCurrentMethod())),rptDate,ldc);return((int)(result.ReturnValue));}对不起,我指的是LINQ本身生成的SQL代码。此外,为了获得最佳格式,您可以将代码示例附加到上面的原始问题。欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地设置其格式并在语法上突出显示它!感谢达斯和马克对格式的评论。说到发帖,我是这里的noob,但多年来一直把你们当作帮助的来源!非常感谢!