none
C# - Como implementar uma composição entre Pessoa X Cliente RRS feed

  • Pergunta

  • Olá pessoal!

    Tenho um relacionamento de composição entre Pessoa e Cliente. Sempre que eu instanciar um Cliente, eu preciso passar para ele uma Pessoa, isto é, um cliente não pode existir sem uma Pessoa. Como eu implemento isso na classe Cliente?

    sexta-feira, 28 de julho de 2017 21:46

Respostas

  • Boa noite Jalber, no .Core ainda tem muitas coisas que os caras estão reescrevendo. O grande problema é que num contexto de ORM esse constutor que eu te passei não vai rolar já que o Entity exige que você tenha um contrutor vazio pra ele poder justamente trazer do banco de dados e instanciar o objeto. Aí você vai ter que só mapear mesmo como uma associação e na sua tabela pelo menos deixar o Cd_pessoa obrigatório.

    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    • Marcado como Resposta JR-Master segunda-feira, 31 de julho de 2017 16:51
    domingo, 30 de julho de 2017 23:58

Todas as Respostas

  • Boa noite,

    Acho que a forma mais simples é garantir isso já no construtor mesmo, como não há construtor vazio, não é possível instanciar sem fornecer uma pessoa.

    public class Cliente { private Pessoa _pessoa = null; public Cliente(Pessoa pessoa) { this._pessoa = pessoa; }

    }

    Apesar de você ter modelado isso como uma composição, olhando me parece herança seja o caso já que a classe Cliente estende o comportamento da classe Pessoa.


    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    sábado, 29 de julho de 2017 01:23
  • Obrigado por ter respondido Rafael Esquiçato.

    Rapaz, isso gera tanta polêmica nos fóruns... Estou usando o Entity Framework Core, mas ele não consegue mapear herança (Table Per Type TPT)... Acho que isso será disponibilizado nas próximas versões... Aí, pesquisando na net, achei alguns tutoriais e aconselhavam usar a composição em vez de herança... Somente em casos extremos... Então, resolvi fazer esse relacionamento com Composição e me aventurar kkkkkkkk.

    domingo, 30 de julho de 2017 15:17
  • Boa noite Jalber, no .Core ainda tem muitas coisas que os caras estão reescrevendo. O grande problema é que num contexto de ORM esse constutor que eu te passei não vai rolar já que o Entity exige que você tenha um contrutor vazio pra ele poder justamente trazer do banco de dados e instanciar o objeto. Aí você vai ter que só mapear mesmo como uma associação e na sua tabela pelo menos deixar o Cd_pessoa obrigatório.

    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    • Marcado como Resposta JR-Master segunda-feira, 31 de julho de 2017 16:51
    domingo, 30 de julho de 2017 23:58
  • Vdd Rafael!

    Obrigado pela dica mano :)

    segunda-feira, 31 de julho de 2017 16:51