RELACIONAMENTO 1 PARA MUITOS
                    Olá boa tarde Galera..
Não sei o que estou fazendo de errado...Tenho um relacionamento de Clientes que podem ter 0 ou muitos telefones.
Minhas entidades e relacionamento sao assim:
Estou fazendo a seguinte consulta
a busca do cliente acontece normalmente.
o objeto cliente fica com todas as propriedades.. menos a propriedade Telefones que fica com 0 registros
Ao fazer a busca de clientes não deveria já vir os telefones relacionados?
Já tentei com Configuration.LazyLoadingEnabled = true e também false
alguem sabe onde posso estar errando?
            Não sei o que estou fazendo de errado...Tenho um relacionamento de Clientes que podem ter 0 ou muitos telefones.
Minhas entidades e relacionamento sao assim:
public class Cliente
{
        public int ClienteID { get; set; }
        public string Nome { get; set; }
        public virtual ICollection<Telefone> Telefones { get; set; }
        public Cliente()
        {
            Telefones = new List<Telefone>();
        }
}
public class Telefone
{
    public int TelefoneID { get; set; }
    public string Fone { get; set; }
    public int ClienteID { get; set; }
    public virtual Cliente Cliente { get; set; }
}
public class TelefoneMap : EntityTypeConfiguration<Telefone>, IMapping
{
    public TelefoneMap()
    {
        HasRequired(t => t.Cliente) 
                .WithMany(c => c.Telefones) 
                .HasForeignKey(t=> t.ClienteID) 
                .WillCascadeOnDelete(true);
    }
}Estou fazendo a seguinte consulta
public IQueryable<TEntity> Get()
{
    return contexto.Set<TEntity>().AsExpandable().AsQueryable();
}
using (var repositorioClientes = new ClienteRepositorio())
{
     cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).SingleOrDefault(); // BUSCA CLIENTE
}a busca do cliente acontece normalmente.
o objeto cliente fica com todas as propriedades.. menos a propriedade Telefones que fica com 0 registros
Ao fazer a busca de clientes não deveria já vir os telefones relacionados?
Já tentei com Configuration.LazyLoadingEnabled = true e também false
alguem sabe onde posso estar errando?
                    Tem que usar o tal do [Ô]Include[Ô]
https://ferhenriquef.com/2012/03/19/uso-de-include-em-consultas-com-o-entity-framework-code-first/
            https://ferhenriquef.com/2012/03/19/uso-de-include-em-consultas-com-o-entity-framework-code-first/
Citação::
Tem que usar o tal do [Ô]Include[Ô]
https://ferhenriquef.com/2012/03/19/uso-de-include-em-consultas-com-o-entity-framework-code-first/
o problema é que estou fazendo consulta dinamica e mais genérica possÃvel.. utilizando LinqKit
O Get esta dessa forma
public IQueryable<TEntity> Get()
{
return contexto.Set<TEntity>().AsExpandable().AsQueryable();
}
Observe o TEntity é onde recebe a entidade quando faço a consulta
cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).SingleOrDefault();
com include ficaria assim:
return contexto.Set<TEntity>().Include([Ô]Telefones[Ô]).AsExpandable().AsQueryable();
Mas como faria esse include de forma generica assim como já faço com a Entidade principal?
                    Cara, acredito que só usando Reflection mesmo para isso. 
                
            
                    consegui apenas mudando um pouco a consulta
ao invés de:
cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).SingleOrDefault(); // BUSCA CLIENTE
fiz assim:
cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).Select(c => new { c, c.Telefones }).SingleOrDefault().c;
                
            ao invés de:
cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).SingleOrDefault(); // BUSCA CLIENTE
fiz assim:
cliente = repositorioClientes.Get().Where(c => c.ClienteID == id).Select(c => new { c, c.Telefones }).SingleOrDefault().c;
                    estou reativando esse tópico, foi acabei enfrentando outro problema nesse mesmo caso.
no caso, até consegui trazer os telefones relacionados com clientes.. mas e a entidade relacionada com Telefones já não funciona
tentei algo como
var query = repositorioClientes.Get().Where(c => c.ClienteID == id).Include([Ô]Telefones[Ô]).Include([Ô]CategoriaTelefones[Ô]).SingleOrDefault();
mas tanto telefone quanto categoria de telefones vem vazio
Eu deixei o Lazy e o Proxy desabilitado no contexto...assim:
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
Se eu deixo ativado (true), ele trás todos os relacionamentos sem até mesmo dar INCLUDE..
porém, conforme li em vários sites e foruns que o recomendado é deixar false para não sobrecarregar o banco com consultas desnecessárias, o que acho válido.
Então queria saber como dar o include nessa minha consulta genérica.
Alguem pode dar uma dica?
            no caso, até consegui trazer os telefones relacionados com clientes.. mas e a entidade relacionada com Telefones já não funciona
tentei algo como
var query = repositorioClientes.Get().Where(c => c.ClienteID == id).Include([Ô]Telefones[Ô]).Include([Ô]CategoriaTelefones[Ô]).SingleOrDefault();
mas tanto telefone quanto categoria de telefones vem vazio

Eu deixei o Lazy e o Proxy desabilitado no contexto...assim:
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
Se eu deixo ativado (true), ele trás todos os relacionamentos sem até mesmo dar INCLUDE..
porém, conforme li em vários sites e foruns que o recomendado é deixar false para não sobrecarregar o banco com consultas desnecessárias, o que acho válido.
Então queria saber como dar o include nessa minha consulta genérica.
Alguem pode dar uma dica?
                        Tópico encerrado , respostas não são mais permitidas
                    
                
