Lambda expression to return a Person in the repository - DDD and Aspnet.Core [duplicate]

1

I have a Person table that has one-to-one relationship with tables PessoaFisica and PessoaJuridica .

  

WhenIpasstheid,ithastocheckmewhetherthenatureisphysicalorlegalandbringmetheperson+pessoafisicaorpessoajuridica(Thepersoncanonlybeoneofthetwo).HowdoImountalambdaexpressionforthis?BelowIhaveoneI'mtryingtomount:

publicPessoaGetJoinById(intid){varpessoa=Db.Pessoa.FirstOrDefault(x=>x.Id==id);//.Include("")
                //.Include("")
            pessoa.(x =>
            {
                if (x.PessoaNatureza == PessoaNatureza.Fisica)
                {
                    Db.Entry(x)
                        .Reference(f => f.PessoaFisica)
                        .Load();
                }
                else
                {
                    Db.Entry(x)
                        .Reference(j => j.PessoaJuridica)
                        .Load();
                }
            });

            return null;
}
    
asked by anonymous 27.02.2018 / 00:12

2 answers

3

Using this my response , you can get a Pessoa with the reference if it is PessoaFisica or PessoaJuridica as follows:

public Pessoa GetJoinById(int id)
{
    var pessoa = Db.Pessoa.FirstOrDefault(x => x.Id == id);
    if  (pessoa != null)
    {
        if (pessoa.PessoaNatureza == PessoaNatureza.Fisica)
        {
            Db
                .Entry(pessoa)
                .Reference(f => f.PessoaFisica)
                .Load();
        }       
        else
        {
            Db
                .Entry(pessoa)
                .Reference(f => f.PessoaJuridica)
                .Load();
        }
        return pessoa;
    }   

    return null;
}
    
27.02.2018 / 00:33
1

Do not you have a field in the table that indicates the document? As a CPF or CNPJ?

Try to do the following:

var pessoa = Db.Pessoa.Where(x => x.PessoaId == id).FirstOrDefault();
if (pessoa.Natureza == PessoaNatureza.Fisica){
    //carrega para pessoa fisica
}
else{
    //carrega para pessoa juridica
}
    
27.02.2018 / 00:29