Q:

calling the same ADO.NET Command several times within the scope of a single transaction

My question concerns how to insert multiple line items on an Order, for example, within the scope of a single transaction. 
All of the line items must be inserted or the transaction must be rolled back. 
Can multiple inserts to the same table be done without sending a custom CLR object as a parameter, equivalent to a table-valued parameter? Can MyInsertSingleLineItemCommand be called inside a loop, inserting one line item with each invocation? Do we need an intermediary temporary table?

A:

Can multiple inserts to the same table be done without sending a
  custom CLR object as a parameter, equivalent to a table-valued
  parameter?

Yes you can do row by row in a single transaction using SqlTransaction.

Can MyInsertSingleLineItemCommand be called inside a loop, inserting
  one line item with each invocation?

Yes example code below.
using (SqlConnection cn = new SqlConnection("YOUR CONNECTION STRING")
{
     cn.Open();
     using (SqlTransaction tr = cn.BeginTransaction()) 
     {
          // your looping code here persisting to sql server db
          tr.Commit();
     }
}

You can also accomplish this using TransactionScope.
using (var ts = new TransactionScope())
{
   using (SqlConnection connection = new SqlConnection("YOUR CONNECTION STRING"))
   {
      connection.Open();
      // your looping code here persisting to sql server db
   }

   ts.Complete();
}

Do we need an intermediary temporary table?

No you do not require a temporary table.
That being said you may want to consider using SqlBulkCopy or a Table Value Parameter to pass your data to Sql Server. Though it depends on your requirements.
More info here on TVPs.

