La maggior parte delle persone lo fa nel modo seguente:
INSERT dbo.Users(Username)
VALUES('my new name');
SELECT NewID = SCOPE_IDENTITY();
(O invece di una query, assegnandola a una variabile.)
Quindi non sono proprio due query contro il tavolo ...
Tuttavia c'è anche il seguente modo:
INSERT dbo.Users(Username)
OUTPUT inserted.ID
VALUES('my new name');
Non sarai davvero in grado di recuperarlo con ExecuteNonQuery
, però.