Questa è più una domanda a risposta aperta riguardante le migliori pratiche di progettazione.
Dire che ho due classi; uno è un veicolo, e l'altro è una fonte di informazioni (per informazioni sulla manutenzione / riparazione). Una fonte di informazioni verrà utilizzata per molti veicoli diversi e un veicolo potrebbe avere più fonti di informazione diverse (per diverse parti del veicolo).
Vehicle e InformationSource sono due diverse tabelle nel database, con una tabella di collegamento separata per mapparle insieme (VehicleInfoSourceLink).
Attualmente conservo una cache / raccolta di oggetti del veicolo per un cliente specifico (tutti i record del veicolo con customerID = X). E conservo anche una cache / raccolta di oggetti InformationSource per un cliente specifico.
Tuttavia, quando arriva il momento di trovare le informazioni disponibili per un veicolo, non sono sicuro di quale sia il modo migliore per farlo.
Opzione 1) Crea un nuovo oggetto nel mio codice C # che rappresenta la tabella di link, ad es. VehicleInfoSourceLink e conserva una cache di questo disponibile insieme alle cache Vehicle e InformationSource. In questo modo quando ho un veicolo specifico, posso guardare gli oggetti di collegamento e trovare tutti gli ID di InformationSource per un veicolo specifico, e quindi selezionare quegli Id dalla cache di InformationSource.
Opzione 2) Crea una funzione SQL chiamata "GetInformationSourcesForVehicle" che acquisisce l'id del veicolo e restituisce gli ID di tutte le fonti di informazione che sono mappate su di esso. Chiamerei questa funzione dal mio codice C # e manterrai un elenco di ID e quindi selezionerò gli oggetti InformationSource con quegli ID.
Veramente desideroso di ascoltare le opinioni delle persone su quale sia l'opzione migliore o forse anche altre soluzioni. Aperto a qualsiasi feedback, incluso come fare domande come questa (se voglio usare forum come questo più in futuro per ottenere buoni consigli sul design).