Ormai gli ORM sono largamente utilizzati.
Puoi creartene uno tuo, ma è consigliabile di farlo riutilizzabile o per ogni query dovrai ogni volta ricrearti tutto quel codice (diventerebbe frustrante programmare).
Al psoto di dictionary utilizzerei un semplice Ienumerable, salvarti l'indice è un problema se l'indice è formato da più colonne.
Di ORM per .NET ne esistono molti,
-EF(entity framework) è sicuramente il principale, ma è un mostro che trovo difficile da domare quando le cose si fanno complesse.
-Dapper lo usano in molti
-Petapoco è un progetto singoladll, ma funziona molto bene
-Tante altre