Como posso recursivamente incluir todas as propriedades navegáveis para emular Lazy Loading
Para emular Lazy Loading, eu gostaria de ter um método que inclua recursivamente o gráfico de objeto completo via Eager Loading para que, ao carregar a entidade, todos os seus dados relacionados também sejam carregados.
Da documentação do MSDN:
Para incluir uma única referência: query.Include (e => e.Level1Reference).Para incluir uma única coleção: query.Include (e => e.Level1Collection).Para incluir uma referência e, em seguida, uma referência um nível abaixo: query.Include (e => e.Level1Reference.Level2Reference).Para incluir uma referência e, em seguida, uma coleção um nível abaixo: query.Include (e => e.Level1Reference.Level2Collection).Para incluir uma coleção e, em seguida, uma referência um nível abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Reference)).Para incluir uma coleção e, em seguida, uma coleção um nível abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Collection)).Para incluir uma coleção e, em seguida, uma referência um nível abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Reference)).Para incluir uma coleção e, em seguida, uma coleção um nível abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Collection)).Para incluir uma coleção, uma referência e uma referência dois níveis abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Reference.Level3Reference)).Para incluir uma coleção, uma coleção e uma referência dois níveis abaixo: query.Include (e => e.Level1Collection.Select (l1 => l1.Level2Collection.Select (l2 => l2.Level3Reference))).Questão:
Como posso recursivamente incluir todas as propriedades navegáveis e construir isso em um método de repositório genérico para que eu possa obter um gráfico de objeto profundo de uma entidade sempre que necessário, independentemente se novas propriedades foram adicionadas?