none
Herencia con Entity Framework RRS feed

  • Pregunta

  • Hola a todos.

    Estoy empezando con POO y  Entity Framework, he leído mucho en este y otros foros pero no acabo de aclararme. Mi modelo tiene una clase base Persona y otras clases derivadas de esta, como por ejemplo, Socio y Voluntario. He implementado la herencia por tipo, o sea, en la bbdd tengo una tabla Personas, una tabla Socios y otra tabla Voluntarios. Mi problema surge porque las clases derivadas no son excluyentes, es decir, una persona puede ser Socio y Voluntario. En este caso, al crear el objeto Socio y el Voluntario, se duplica la Persona. ¿Que estoy planteando mal? ¿Tengo que olvidarme de la herencia y plantearlo como una relación 1 a 1?

    

    lunes, 10 de marzo de 2014 16:25

Todas las respuestas

  • Después de un buen descanso encontré la respuesta aqui:

    http://geeks.ms/blogs/omarvr/archive/2009/12/07/la-herencia-mal-planteada.aspx

    martes, 11 de marzo de 2014 9:07
  • hola

    pero podrias hacer que una clase derive de otra

    public class Persona{

    }

    public class Voluntario : Persona{

    }

    public class Socio : Voluntario{

    }

    por supuesto un socio tambine es voluntario, de esta forma segun a que nivel de la herencia llegues podras tener que es solo voluntario o voluntario y socio

    la unica macana es que no podra ser solo socio

    ¿Tengo que olvidarme de la herencia y plantearlo como una relación 1 a 1?

    depende, quizas estas forzando una herencia que no existe

    aqui pareciera que hay herencia, pero quizas debas crear un tercer tipo que refleje cuando es voluntario y socio al mismo tiempo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de marzo de 2014 12:03
  • Muchas gracias por tu rápida respuesta , Leandro.

    La solución que propones derivando voluntario de socio creo que no me sirve, puesto que una persona puede ser socio solo, voluntario solo , o ser socio y voluntario a la vez.

    Probablemente estaba forzando la herencia, voy a cambiarla en el modelo por una asociación 1-1.  

    Gracias.

    martes, 11 de marzo de 2014 12:56