none
Herança no Code First RRS feed

Respostas

  • Olá Moulin,

    Table Per Hierarchy (TPH) - Utiliza uma única tabela para armazenar os dados de toda a hierárquia de classes, diferenciando as classes apenas por conta de uma coluna identificadora na tabela.

    Tabler Per Type (TPT) - Cria uma tabela para cada classe pertencente a hierarquia, sendo que uma destas tabelas é a classe mais alta da hierarquia de classes

    O modelo default é o TPH. Mas se vc quiser utilizar o TPT é bastante simples, basta fazer dentro do seu OnModelCreating do seu Data Context:

    modelBuilder.Entity<ClassePai>()
        .Map(m =>
        {
            m.ToTable("TabelaClassePai");
        })
        .Map<ClasseFilha>(m =>
        {
            m.ToTable("TabelaClasseFilha");
            m.MapInheritedProperties();
        });

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    • Marcado como Resposta A.Moulin sexta-feira, 23 de março de 2012 13:03
    sexta-feira, 23 de março de 2012 12:44
    Moderador

Todas as Respostas

  • Bom dia.

    Segue um exemplo básico:

    public class Pessoa
    {
    int id {get;set;}
    string nome_razao {get;set;}
    string email {get;set;}
    string endereco {get;set;}
    //mais campos que sejam comuns entre Fisico e Juridico, ou o que esteja na sua regra de negócios
    }
    
    public class PessoaFisica : Pessoa
    {
    string rg {get;set;}
    string cpf {get;set;}
    //outros campos referentes a pessoa fisica
    }
    
    public class PessoaJuridica : Pessoa
    {
    string cnpj {get;set;}
    string ie {get;set;}
    }

    Espero ter ajudado.


    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    sexta-feira, 23 de março de 2012 12:21
  • Bota ajudou nisso, da hora.

    Já te explorando, como ficam os relacionamentos no seu exemplo?

    Valeu.

    sexta-feira, 23 de março de 2012 12:35
  • Sobre relacionamentos aconselho você a dar uma estudada melhor no assunto.

    Segue exemplo bem didatico: http://www.macoratti.net/11/09/ef4_aspcf.htm


    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    sexta-feira, 23 de março de 2012 12:39
  • Olá Moulin,

    Table Per Hierarchy (TPH) - Utiliza uma única tabela para armazenar os dados de toda a hierárquia de classes, diferenciando as classes apenas por conta de uma coluna identificadora na tabela.

    Tabler Per Type (TPT) - Cria uma tabela para cada classe pertencente a hierarquia, sendo que uma destas tabelas é a classe mais alta da hierarquia de classes

    O modelo default é o TPH. Mas se vc quiser utilizar o TPT é bastante simples, basta fazer dentro do seu OnModelCreating do seu Data Context:

    modelBuilder.Entity<ClassePai>()
        .Map(m =>
        {
            m.ToTable("TabelaClassePai");
        })
        .Map<ClasseFilha>(m =>
        {
            m.ToTable("TabelaClasseFilha");
            m.MapInheritedProperties();
        });

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    • Marcado como Resposta A.Moulin sexta-feira, 23 de março de 2012 13:03
    sexta-feira, 23 de março de 2012 12:44
    Moderador