IMHO, and ordering which depends on PK is a sign of a wrong choice of ID. The ordering in which you show the saved rows should be up to your BL, not the order in which they arrived the DB. Generally this is ruled by the PKs (i.e: OrderId, ProductId), or a good choice will be to show them ordered by some usual field (i.e.: product.Name).
I understand your point though. However LLBLGen cannot make assumptions on that and neither can it assume that the DB is an ordered set.
Said that, your workaround is a good one if you want save them in your own preferred order. UOW works the same way, the difference is that you can add multiple graphs to a UOW, for instance:
uow.AddForSave(customer1);
uow.AddForSave(customer2);
... where customer1 and customer2 and two separate graphs to be saved. Then they will be saved recursively in a single transaction when you do uow.Commit().
Another option you already saw is to save them in your own loop, example:
adapter.StartTransaction(...);
// save addition dependent objects
// save the list
for(int i=0; i< myOrdersList.Count; i++)
{
adapter.SaveEntity(myOrdersList, false, false);
}
adapter.Commit();
That is not that hard if your graph is not that deep, otherwise your workaround looks good in this case.