Ho un database con le relazioni deep table to table
ad esempio
Clients (one to many) -> ClientData (one to many) -> ClientJob (one to many) -> ClientProcess (one to many) -> ClientStep...
così via.
E neanche questi sono alberi di rami. Quindi i clienti hanno anche una relazione uno a molti con un altro albero di tabelle. Il database ha un numero molto elevato di tabelle e una serie di relazioni tra di loro.
I modelli C # che ho sono simili nella progettazione a questo
public class Client {
//base client data
public string ClientId { get; set; }
public string ClientName { get; set; }
//etc...
//Objects with the one to many relationship
public List<ClientData> {get; set;}
public List<ClientLocation> {get; set;}
//etc..
}
E l'oggetto ClientData ha i suoi dati di base e gli elenchi di oggetti rappresentativi delle sue relazioni con i database relazionali e così via.
Sono stato indirizzato a non utilizzare Entity Framework e invece devo creare viste scritte a mano o stored procedure per l'accesso ai dati.
La mia domanda è, c'è un modello di progettazione che posso utilizzare qui che rende questa struttura SQL / C # efficiente e manutenibile?
Vorrei poter eseguire query su sottostrutture, quindi, anziché ottenere sempre un client completo e tutti gli oggetti correlati, posso ottenere uno specifico ClientData e tutti gli oggetti nidificati ma non il client che lo possiede.