¿Cómo se modela una relación de composición simple?
-
18-09-2019 - |
Pregunta
¿Alguien puede ayudarme a comprender cuál es la mejor manera de modelar una relación de composición?
Si por ejemplo tengo un estudiante que puede tener muchos horarios, crearía aproximadamente:
class Student
{
prop long Pk { get; set; }
prop string Name { get; set; }
prop List<Schedule> Schedules { get; set; }
}
class Schedule
{
prop string Semester { get; set; }
prop List<Course> Courses{ get; set; }
}
En algún momento, es posible que tenga un objeto Horario y desee identificar a qué estudiante pertenece.quiero poder escribir Schedule.Student.Name
, y recibir a cambio el nombre del estudiante.¿Agrego también una propiedad Student a mi objeto Schedule?
Mi aplicación ha estado pasando un Student Pk a mi objeto Schedule para poder realizar la funcionalidad CRUD.Mantendré Student PK como una variable privada para poder controlarlo si lo necesito.
A medida que mi aplicación se vuelve más compleja, me resulta difícil mantener lo que he estado haciendo.¿Cuáles son tus sugerencias para mí?¿Qué más puedo consultar (libros/enlaces) para actualizar y manejar mejor estos fundamentos?
Solución
"Quiero poder escribir Horario.Estudiante.Nombre y recibir a cambio el nombre del estudiante.¿Agrego también una propiedad de Estudiante a mi objeto Programación?" Sí.
Lo que está describiendo (que admite claves externas para la búsqueda y referencias de objetos para una fácil navegación por el gráfico de objetos) parece una muy buena combinación para un asignador relacional de objetos (ORM).Un buen ORM cargará automáticamente el objeto/objetos asociados utilizando el FK/PK (p. ej.si el Programa tiene un campo StudentPK, entonces el asignador se encargará de cargar/mapear la propiedad del Estudiante por usted).Existen muchos productos de este tipo:puede utilizar marcos .NET integrados como el Marco de la entidad, los de código abierto como NHibernate o productos comerciales como Velocidad de la luz, LLBLGen, Espacios de entidad o Acceso abierto (divulgación:Trabajo para una empresa que fabrica un ORM comercial).Busque en Google ORM o mapeador relacional de objetos, o consulte Wikipedia para obtener una descripción general del tipo de cosas que estoy describiendo.