none
Entities - Como mapear herança entre Tabela e Objetos (V Studio) RRS feed

  • Pergunta

  • Pessoal, gostaria de saber como mapear esse relacionamento entre classes para o modelo de ER que o VS permite.

    No nosso caso, não importamos o modelo de um database existente, fizemos o inverso (que é o correto), primeiro definimos o modelo de classes depois o de ER, o que falta é definir mapeamentos como estes a seguir.

    abstratc class Content
    {
         private Int32 Id;
         private String Text;

         public Int32 Id{ get; set; }
         public String Text { get; set; }

    }

    class x : Content
    {

         private String Field1;


         public String Field1{ get; set; }   

    }

    TABELA X
    Id
    Text
    Field1

    O que acontece? Ele pede para que eu efetuei o mapeamento da classe abstrata.
    Mas a classe é apenas um conceito e não existe no modelo de ER!
    Ela é apenas uma classe abstrata onde várias outras classes do modelo herdam suas funcionalidades.
    Coloquei apenas o básico para entendimento.

    Como eu fiz funcionar?
    Retirei do modelo a classe abstrata e repliquei as propriedades comuns para todas os seus subtipos para que a compilação fosse feita.

    como eu poderia ter a classe abstrata no modelo sem que o VS Express reclame de um não mapeamento?

    Olavo Alexandrino: MCP - SCJP 5.0
    terça-feira, 21 de julho de 2009 13:24

Todas as Respostas

  • Oi,

    A classe abstrata é como se você tivesse normalizado o banco, separado dados em uma tabela a parte. Portanto para o EF ela seria mapeada, para uma tabela a parte, isso em um modelo de dados "ideal", altamente normalizado.

    No seu caso, ao copiar as propriedades comuns para os subtipos você aplicou um certo grau de desnormalização (algo que creio já havia no seu banco) no modelo.

    Veja este documento sobre os tipos de mapeamento no EF : http://thedatafarm.com/blog/data-access/entity-framework-supported-mapping-scenarios-white-paper/

    []'s

    Dennes

    *Treinamento de ASP.NET em SP 25/07 apenas 12x70,88 - http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    *Treinamento de ASP.NET no Rio 01/08, http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    Tels: (11) 3170-3056, (21) 2262-1368, (21) 9240-5134 E-Mail : Contato@bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    quarta-feira, 22 de julho de 2009 05:20
  • Oi,

    A classe abstrata é como se você tivesse normalizado o banco, separado dados em uma tabela a parte. Portanto para o EF ela seria mapeada, para uma tabela a parte, isso em um modelo de dados "ideal", altamente normalizado.

    No seu caso, ao copiar as propriedades comuns para os subtipos você aplicou um certo grau de desnormalização (algo que creio já havia no seu banco) no modelo.

    Veja este documento sobre os tipos de mapeamento no EF : http://thedatafarm.com/blog/data-access/entity-framework-supported-mapping-scenarios-white-paper/

    []'s

    Dennes

    *Treinamento de ASP.NET em SP 25/07 apenas 12x70,88 - http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    *Treinamento de ASP.NET no Rio 01/08, http://www.bufaloinfo.com.br/cursos/aspnet2.asp

    Tels: (11) 31... , (21) 2262-1368 , (21) 9240-5134 E-Mail : Contato@bufaloinfo.com.br


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    Olá Dennes, o cenário é exatamente o inverso.

    As propriedades e características comuns estão na classe abstrata (classe base ou superclasse) e não em seus subtipos.

    No requisito, várias classes tem algumas características em comum que é ter a propriedade ID e TEXT (além de outras).

    Nesse cenário simples, não existe a necessidade de criação de tabela extra de relacionamento pois não é uma associação de 1 pra "n" por exemplo, é apenas uma herança e herança não existe no modelo E/R.

    Eu também poderia, em meu diagrama de classe, uma classe que não precisasse ser persistida no BD.
    Eu pensava que eu poderia utilizar o Design para definir essas classes e depois o forma de mapeamento, mas acho que existe a obrigatoriedade de toda classe definida ali, ser mapeada.

    Vou dá uma olhada no documento, parece ser legal!



    Olavo Alexandrino
    quarta-feira, 22 de julho de 2009 11:04