[英]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.