Sto cercando di mettere insieme alcuni modelli base in OOP (C #), e apparentemente ho sbagliato idea.
Se ho un caso Comp di Workman, è applicato a un paziente. Ha anche una o più PatientVisits applicate al caso. Ad ogni PatientVisit è associato anche un Paziente e, naturalmente, un Paziente può avere un qualsiasi numero di Visite associato.
Il mio pensiero originale era quello di creare riflessioni di base sul mondo reale dei modelli di business facendo qualcosa del tipo:
class Patient {
int ID;
string FirstName;
string LastName;
List<Visit> Visits;
}
class Visit {
int ID;
DateTime VisitDate;
Patient Patient;
List<DxCode> DxCodes;
}
class WCCase {
int ID;
Patient Patient;
DateTime DateEntered;
List<Visit> Visits;
}
Ho ingenuamente pensato che sarebbe bello, caricherò il mio modello e avrò tutto a portata di mano, molto semantico e rappresentativo del dominio / mondo reale, giusto?
Quindi, posso andare sulla strada opposta e riempire l'oggetto genitore e memorizzare gli elenchi di ID per i modelli correlati:
class Patient {
int ID;
string FirstName;
string LastName;
List<int> VisitIDs;
public static Patient GetPatient(int id) {}
}
class Visit {
int ID;
DateTime VisitDate;
int PatientID;
List<DxCode> DxCodes;
public Static Visit GetVisit(int id) {}
}
class WCCase {
int ID;
int PatientID;
DateTime DateEntered;
List<int> VisitIDs;
public static case GetCase(int id) {}
}
Questo ovviamente mi permette di caricare tutto su richiesta (ottenere un ID e afferrare l'oggetto attraverso il suo metodo Get * ()), ma sembra un po 'lontano dall'idea di un modello del mondo reale ben rappresentativo e più come un mirror di una rappresentazione della tabella del database.
Suppongo che ci sia una via di mezzo, ma di sicuro vorrei avere qualche consiglio su come trovarlo ... Qualcuno può dare alcuni esempi di base su come modellizzarlo senza diventare pazzo con riferimenti e circolari, ecc. ?
Grazie in anticipo.