C# 批处理sqlclient命令中的作用域\标识()

C# 批处理sqlclient命令中的作用域\标识(),c#,sql,sqlclient,scope-identity,C#,Sql,Sqlclient,Scope Identity,我通常在插入记录时使用存储过程来确保获得正确的scope_identity()值。现在使用SqlClient时,我需要获取插入记录的id字段 我的理解是,如果我用insert批处理scope_identity()命令,那么它仍然与insert命令在同一范围内?像下面这样。但很难证实。。。使用此..是否可以100%获得正确的id值 (id字段是自动递增的bigint-Sql Server) (我的重点): 返回中插入到标识列中的最后一个标识值 同样的范围。作用域是一个模块:存储过程、触发器、, 函

我通常在插入记录时使用存储过程来确保获得正确的scope_identity()值。现在使用SqlClient时,我需要获取插入记录的id字段

我的理解是,如果我用insert批处理scope_identity()命令,那么它仍然与insert命令在同一范围内?像下面这样。但很难证实。。。使用此..是否可以100%获得正确的id值

(id字段是自动递增的bigint-Sql Server)

(我的重点):

返回中插入到标识列中的最后一个标识值 同样的范围。作用域是一个模块:存储过程、触发器、, 函数,或批处理。因此,两种说法是相同的 作用域,如果它们位于同一存储过程、函数中,或 批处理

在这种情况下,您的命令:

"insert into .... ; select SCOPE_IDENTITY();"
是一个批处理,因此,您将获得该批处理中最后插入的标识值,在本例中,它是insert中的标识值,因为它是批处理中唯一的其他语句

"insert into .... ; select SCOPE_IDENTITY();"