You may have to add some error handling:
BEGIN TRAN
BEGIN TRY
EXEC P1
EXEC P2
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Update it with the C# code (I myself find it much easier to have the trans code out of the sprocs and in the data layer - does compose stored procedures easier at a later stage):
Interested in SQL ? Check out this SQL Certification course by Intellipaat.