ai tempi antichi si facevano parecchie cose "poco pulite", tipo usare colonne non-identity e gestire a manella il max(id) (sempre con la sicurezza di una transazione per volta), oppure si può fare, nella stessa select una cosa tipo
INSERT INTO Table VALUES bla bla bla;
SELECT @@IDENTITY;
tutto in una sqlcommand eseguita con executescalar e preso l'identity che ti ritorna (e che riguarda quella transaction), si possono poi eseguire gli altri insert...
questo è un modo, poi ce ne sono altri, ognuno si è "inventato" il suo ;-)