avrei bisogno di un consiglio su come "modellare" alcuni oggetti per un mio progetto

semplifico la cosa
immaginate un contesto del genere "utente" "ruolo" "attivita"
dove un utente appartiene ad un ruolo ed ad un ruolo sono associate diverse attivita...


se dovessi scrivere delle classi per rendere ad "oggetti" il problema dall'alto della mia ignoranza farei cosi:


Una classe di tipo utente con 3 metodi: Add,Remove,Edit e proprieta tipo: Name, Age, Address ecc ecc

stessa cosa per il ruolo; i soliti metodi per aggiungere, rimuovere modificare (chiaramente nel db) e le varie prorieta relative al ruolo
una classe per l'attivita .... bla ,bla..


quello che intendo fare sono delle classi che vivano di vita propria, cioe siano in grado di connettersi al db, effettuare operazioni sql sulle relative

tabelle per poi liberare le risorse quando vengono distrutte, ora tutto questo dovrebbe essere OOP(sembra che ho scoperto l'acqua calda)

il mio dubbio, per esempio, è come passare la connessione(l'oggetto OleDbConnection) alle classi..

ho pensato di passarla tramite il construttore della classe o tramite una proprieta? cosi facendo pero dovrei passarlo ogni volta che istanzio una classe
come posso fare per farlo una volta sola e fare in modo che le classi se la prendano(la connessione) da sole? Esiste un pattern del genere(un modo di

affrontare il problama degli accessi al db comune tra diverse classi?)

una cosa che simuli le vecchie variabili globali, ma mi sembra di aver capito abbastanza bene che in un mondo ad oggetti una variabile globale non ha molto

senso mi sbaglio?
qualcuno che ha gia affrontato questo problema puo darmi qualche dritta?

il linguaggio che uso è vb.net anche se quello che mi occorre di sapere è la strategia di sviluppo da adottare