Refetch refetches only the entity you call it on, so in your code only 'test' is refetched. This is done automatically for you after a save, you don't have to call 'refetch' in normal cases.
With a PK value change, you have to see the change as a delete+insert, they're actually new entities (as the identity changed). This means refetching the data in the same objects isn't recommended.
If you still want to, you can: you're relying on lazy loading which doesn't get triggered again when you touch the property the second time. You can reset this, so you can do:
//...
test.Save(true); // this will make sure related entities are saved too!
test.AlreadyFetchedOrderLines = false;
// you can now lazy load test.OrderLines again.
However be careful with lazy loading. It's easy to run into a select n+1 where you issue a lot of queries which is unnecessary. Always first consider a prefetch path (eager loading) before using lazy loading. https://www.llblgen.com/Documentation/5.6/LLBLGen%20Pro%20RTF/Using%20the%20generated%20code/SelfServicing/gencode_prefetchpaths.htm
Also, if you are just starting with your project, please consider Adapter over SelfServicing. If this is for a project you inherited which already uses selfservicing, you can keep using it of course (it won't go away, but it doesn't have some advanced features as adapter does).