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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top