none
Ayuda al modelar la herencia y EF RRS feed

  • Pregunta

  • Buenas a todos, vengo de la programación estructurada y hace un tiempito que vengo pasandome a la programación Orientada a Objetos, pero resulta que la herencia nunca pude implementarla... tengo la oportunidad y quisiera que me den algunos consejos

    Tengo un sistemas de expedientes, hecho y que funciona, ahora, resulta que se agrego una nueva caracteristica, apareceieron las "NOTAS", qeu es un tipo de actuacion notarial diferente PERO NO EXISTEN DIFERENCIAS EN CUANTO A CAMPOS DE LAS TABLAS. Se me ocurre que aqui podria aplicar algo de herencia... 

    Entonces, cree un proyecto nuevo y empece a probar con Entity Framework 4.

    veamos: 

    Cree una clase llamada Act_Not que tiene lo siguiente:

    @Nro, @cod, @Año, Iniciador, asunto

    cree una clase llamada NOTA  y puse que heredaba de la clase Act_Not

    Luego, creo otra clase llamada EXPEDIENTE y tamb la herede de la clase Act_Not

    luego, para terminar, tenemos el registros de movimientos de estas Actuaciones notariales, por lo que cree una entidad llamada MOVIMIENTOS con el generador del EF, aqui, agrego una asociacion a ACT_NOT.

    La duda se me genera cuando me pregunto a mi mismo como diferencio los movimientos de las notas de los expedientes...

    Asi como lo estoy haciendo es la manera correcta!? 

    Saludoss y gracias por su ayuda!

    viernes, 6 de julio de 2012 0:28

Todas las respuestas

  • La duda se me genera cuando me pregunto a mi mismo como diferencio los movimientos de las notas de los expedientes...

    los diferencias por el tipo, tendras movimientos que navega a uan lista de Act_Not, en primer instancia solo sera eso una lista de Act_Not

    solo cuando quieras trabjar cada item es que analizaras el tipo de Act_Not, alli es donde se define si es Nota o Expediente

    recuerda que debes definir como vas a persitir la herencia, si es uan tabla por tipo, o una unica tabla con el campo que defina de que tipo se trata, porque la herencia tiene varias formas de persistirse

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Eder Costa miércoles, 11 de julio de 2012 19:04
    • Desmarcado como respuesta NioDeTark martes, 24 de julio de 2012 13:27
    viernes, 6 de julio de 2012 2:03
  • Hola Leandro, gracias por responder, disculpa la demora, es que entramos en vacaciones.... :-)

    Yo he dejado la implementación al EF... avanzando sobre ese temita, por ejemplo en mi caso, las clases Notas y Expedientes, son exactamente iguales en lo que se refiere a campos, solo que son entidades diferentes, y por ejemplo los expedientes tienen que terminar si o si en una resolución, ademas, los campos claves son los mismos, pero, por supuesto puede existir una nota con campo clave ="31-2012-235" y un expediente con esa MISMA clave... entonces, segun mis conocimientos de implementación de herencia, se implementa en tablas diferentes SOLO los campos diferentes, que en este caso no existen! Deberia agregarle un campo que los diferencie?!! No sería esto contrario a las buenas practicas hacerlo!?

    saludos y gracias

    lunes, 16 de julio de 2012 14:40
  • He notado que si agrego un campo tipo en ambas clases, SI SE GENERAN los metodos necesarios, como Expediente.CreateExpediente(...), en cambio si no pongo esos campos no... evidentemente SON NECESARIOS!

    Esto es asi!?!?  en definitiva, el constructor de la clase Expediente me pedira un campo mas que se llamará "tipo" pero que siempre tendrá un valor fijo, por ejemplo 1 ... es mas, ahora que me pongo a pensar, ni siquiera hace falta que TENGA un valor... ya que el framework diferencia que es un Expediente y que es una Nota...

    De la reflexion anterior me pregunto: "LAS CLAVES DEBEN ESTAR DEFINIDAS EN LA CLASE MAESTRA, O DEBEN ESTAR EN LAS HIJAS?"

    Aparentemente deben estar en las hijas, ya que si las pongo en la maestra el EF los pone en una sola tabla y entonces no serian difierentes para notas que para expedientes...

    • Editado NioDeTark martes, 31 de julio de 2012 23:13
    martes, 31 de julio de 2012 23:11