Во-первых, вам нужно выбрать пакет доступа к данным, используя ORM, такой как Entity Framework или NHibernate, будет гораздо проще, чем писать свою собственную оболочку вокруг чего-то вроде ADO. После того, как вы определились с пакетом, который будет использовать ваша реализация, вы предоставите способ взаимодействия с пакетом, подключенным к базе данных.
Используя сущностную структуру, ваша реализация будет скрывать доступ к базовому DataContext. Используя nHibernate, ваша реализация скрывает детали об объекте ISession.
Как только вы поймете, что скрывает ваша реализация, довольно просто отобразить типы сущностей (T в вашем определении универсального класса) на основные операции, которые обеспечивает ваш интерфейс (Add, Delete, GetById и т. Д ...)