The second design choice would be creating a separate application data object, one contained dictionaries and lists: a Dictionary containing the only Employee object, a Dictionary containing that employee's Orders, a List contains all the details of those Orders, a Dictionary contains al the Customers, and Dictionary contains all the Products in Details are always retrieved via their parent order and not by their primary key, it can be placed in a List rather than a Dictionary, thus saving us the trouble of creating confusion with the Detail's composite concept of primary key into of a single-valued dictionary key.
A second design choice would be to have a separate application data object, one that contained dictionaries and lists: a Dictionary containing the one and only Employee object, a Dictionary containing that employee's Orders, a List containing all the Details of those Orders, a Dictionary containing all the Customers, and a Dictionary containing all the Products. Since Details are always retrieved via their parent order and not by their primary key, they can be placed in a List rather than in a Dictionary, thus saving us the trouble of having to convert the Detail's composite primary key into a single-valued dictionary key.