Ci sono diversi strumenti e diversi modelli.
Strumenti
ADO.NET
ADO.NET è molto più di DataSet
e DataTable
. Non userei queste classi in nessun progetto, ma userei invece IDataReader
per popolare i pocos come descritto qui: link
Mappatori dei dati
Il prossimo passo è usare un mappatore di dati. Quello che fanno è lasciarti scrivere istruzioni SQL, ma ti restituiranno automaticamente POCO. Sia come rappresentazione dynamic
o come classi generate da T4. (Puoi anche mappare le tue classi)
Alcuni esempi sono Massive, PetaPoco e Simple.Data.
O / Ms
I mappatori oggetto / relazione rappresentano l'approccio più complesso (complesso come nella creazione). Si prendono cura di tutto per te. La maggior parte delle OR / Ms ha anche un provider LINQ to SQL. Cioè, puoi scrivere istruzioni LINQ che poi vengono convertite in SQL.
Il framework Entity, ad esempio, ha un visual designer in cui puoi puntare alle tabelle / colonne per le quali vuoi ottenere le classi. Quindi è abbastanza facile iniziare.
Esempi: Lightspeed, Entity Framework e nhibernate.
Modelli
I pattern ti aiutano a strutturare il codice nel livello di accesso ai dati.
Modello di repository
Il pattern del repository è piuttosto vecchio ma è ancora un pattern rilevante. L'idea è di astrarre l'accesso ai dati per ridurre l'accoppiamento e la complessità.
Oggetto query
Il modello dell'oggetto query viene utilizzato per creare una classe per query. Ad esempio, rende più semplice vedere quali parametri sono richiesti (argomenti del costruttore) e quali sono facoltativi.
CQS
La separazione Comando / Domanda è un modo per separare le informazioni di interrogazione (recupero) e comandi (memorizzazione). Non è solo un pattern di accesso ai dati, ma un modo per strutturare la tua applicazione.
CQRS
CQRS è simile a CQS ma fa un ulteriore passo avanti. Usa modelli separati (database) per letture e scritture. Il modello di lettura viene generalmente generato con l'aiuto di eventi delle scritture.
WPF
In WPF hai i modelli di vista che usi per mappare la GUI al tuo accesso ai dati. Usa ObservableCollection
per ottenere una GUI che risponda alle modifiche.
Nel modello di vista utilizzerai uno degli strumenti che ho descritto sopra (direttamente o attraverso uno dei pattern descritti).
Informazioni aggiuntive
Ho scritto un post sul blog sul livello dati qui: link dove discuto l'accesso ai dati.
le stored procedure imho sono obsolete. Le query parametrizzate sono in molti database veloci quanto quelle memorizzate.