繁体   English   中英

从存储过程中获取插入/更新/删除的行数 - Linq到SQL

[英]Get inserted/updated/deleted rows count from stored procedure - Linq to SQL

我正在调用一个存储过程,它可以从Linq执行一些更新/插入/删除(一次一个)。 这个存储过程被添加到我正在使用的datacontext中。 调用此存储过程后,我想获取受此存储过程影响的行数。 此存储过程也可能影响多个表。

我尝试使用datacontext的GetChangeSet方法,但它不会返回在此存储过程中执行的插入/更新/删除的受影响行计数。

我不想使用@@ rowcount并将该rowcount作为返回值返回。

有什么方法可以找到受影响的行数吗?

在存储过程中,您可以创建一个表变量(如果表变量不可用,则为临时表),并在影响表的行数的存储过程的每个部分之后插入@@ rowcount,然后执行选择从表变量作为商店过程中的最后一个操作。

例如

CREATE PROCEDURE myProc
AS
BEGIN
    DECLARE @ra TABLE
    (
        rowsAffected INT,
        queryName VARCHAR(50)
    )

    INSERT INTO sometable
    SELECT col1, col2
    FROM someothertable

    INSERT INTO @ra (rowsAffected, queryName) VALUES (@@ROWCOUNT, 'insert into sometable')

    DELETE FROM anothertable
    WHERE thingID = something

    INSERT INTO @ra (rowsAffected, queryName) VALUES (@@ROWCOUNT, 'delete from anothertable')

    SELECT rowsAffected, queryName
    FROM @ra
END

然后更新您的DBML,以便在Linq to SQL查询中可以使用这些行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM