Essenzialmente, ciò che è necessario sviluppare per trasferire i dati tra le strutture di dati in memoria e gli archivi di dati persistenti (file, DB, qualsiasi cosa) è un Data Access Layer o un DAL. Questo è uno dei tuoi "livelli applicazione" in un'applicazione N-tier propriamente costruita. Gli oggetti di questo livello sanno come creare strutture dati dai dati DB e viceversa per convertire una struttura dati opportunamente popolata in dati DB, in modo che gli oggetti generalmente fuori dal livello non debbano avere questa conoscenza.
Esistono diversi modelli per la costruzione di un livello DAL. Il più comune nella mia esperienza è una "porta d'ingresso" centralizzata che può accettare qualsiasi richiesta di leggere o scrivere dati e produrre qualsiasi struttura dati necessaria. Questo modello è chiamato "Repository". Dovresti effettuare una chiamata a questo oggetto lungo le linee di:
int myObjectId = 1243;
MyObject myObjectInstance = myRepository.RetrieveById<MyObject>(myObjectId);
... e quindi myObjectInstance verrà popolato con i dati della tabella che rappresentano i record MyObject, con la chiave identificativa che abbiamo specificato. Come ciò accade esattamente, nessuno al di fuori del Repository deve davvero saperlo; è possibile costruire dinamicamente un'istruzione SQL, utilizzare un oggetto di accesso ai dati che sappia in modo specifico come recuperare le istanze MyObject, oppure eseguire come stati Oded e utilizzare una libreria di terze parti denominata Object-Relational Mapper o ORM che astrae tutti i dettagli di come avviene il recupero.