Executing multiple statements / sqlcomands within a single ado.net transaction
===

I'm not including any code here because I've re-written it so many times over the past few days its really not worth bothering with any more, so I'll explain my problem in generic terms.

I have a winforms application written in C# and connected to a sql server database.  In certain parts of my application I can have as many as 10 SQL command operating on numerous tables within the database, and which I need to contain within a single transaction, because it is an 'all or nothing' situation.  If any one of the 10 commands fails, I want non of the commands to be committed.

Complicating factors include:

1. Each of the 10 sqlcommands have multiple parameters
2. Some of the sqlcommands use INSERT and I need to use the server generated identity in some of the subsequent sqlcommands.
3. Some of the commands operate on the same data i.e. an early command might INSERT a new item in the database and one of the later sqlcommands will attempt to update that same entry.

Any help would be most appreciated as I am at my wits end with this issue having spent most of the week on it and feeling like relatively little progress has been made.  