Domanda

Qualcuno può aiutarmi a capire come modellare al meglio una relazione di composizione?

Se ad esempio ho uno studente che può avere molti orari, creerei approssimativamente:

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; }
}

Da qualche parte in futuro potrei avere un oggetto Schedule e desidererò identificare a quale studente appartiene.Voglio essere in grado di scrivere Schedule.Student.Name, e riceverai in cambio il nome dello studente.Aggiungo anche una proprietà Studente al mio oggetto Pianificazione?

La mia applicazione ha passato uno Student Pk al mio oggetto Schedule per eseguire la funzionalità CRUD.Conservo Student PK come variabile privata per poterla controllare se ne ho bisogno.

Man mano che la mia domanda diventa più complessa, trovo difficile mantenere ciò che ho fatto.Quali sono i tuoi suggerimenti per me?Cos'altro posso consultare (libri/link) per rinfrescarmi e gestire meglio questi fondamenti?

È stato utile?

Soluzione

"Voglio poter scrivere Schedule.Student.Name e ricevere in cambio il nome dello studente.Aggiungo anche una proprietà Studente al mio oggetto Pianificazione?" Sì.

Quello che stai descrivendo (supportando sia le chiavi esterne per la ricerca che i riferimenti agli oggetti per una facile navigazione del grafico dell'oggetto) sembra un ottimo abbinamento per un mappatore relazionale a oggetti (ORM).Un buon ORM caricherà automaticamente l'oggetto/gli oggetti associati per te utilizzando FK/PK (ad es.se la pianificazione ha un campo StudentPK, il mappatore gestirà il caricamento/mappatura della proprietà Student per te).Esistono molti prodotti di questo tipo:è possibile utilizzare framework .NET integrati come Struttura delle entità, quelli open source come Hibernate o prodotti commerciali come Velocità della luce, LLBLGen, Spazi entità O Accesso libero (divulgazione:Lavoro per un'azienda che produce ORM commerciale).Google per ORM o mappatore relazionale di oggetti, oppure controlla Wikipedia, per una panoramica del tipo di cose che sto descrivendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top