La mayoría de la gente hace esto de la siguiente manera:
INSERT dbo.Users(Username)
VALUES('my new name');
SELECT NewID = SCOPE_IDENTITY();
(O en lugar de una consulta, asignándola a una variable).
Así que no son realmente dos consultas contra la mesa ...
Sin embargo, también existe la siguiente manera:
INSERT dbo.Users(Username)
OUTPUT inserted.ID
VALUES('my new name');
Realmente no podrá recuperar esto con ExecuteNonQuery
, sin embargo.