I had a bit of a problem writing this:
.WithPath(new PathEdge<OrderEntity>(CustomerEntity.PrefetchPathOrders,
new PathEdge<EmployeeEntity>(OrderEntity.PrefetchPathEmployee)),
new PathEdge<EmployeeEntity>(CustomerEntity.PrefetchPathEmployeeCollectionViaOrder));
with your code.
The main hickup I had was: do I have to specify another Subpath or not? But it turned out to be not the case:
.WithPath(customerPath => customerPath
.Prefetch<OrderEntity>(c => c.Orders).SubPath(orderPath => orderPath.Prefetch(o => o.Employee))
.Prefetch<EmployeeEntity>(c => c.EmployeeCollectionViaOrder));
What I'm a bit struggling with, but that's the same as with my api I think, is that it's not that intuitive at first, also because of the classes in the tooltip info. But I think that's unavoidable... After you realize you've to specify .Prefetch for nodes at the same level and .SubPath for nodes below the current level, it's ok
I really like the way you have solved it via the lambdas, very clever
I'll change 'Limit' into 'LimitTo' (or is LimitBy better english? )