C # Абстракция базы данных для Microsoft SQL Server, Oracle, MySQL и DB2

Мне нужен пример исходного кода C #, который абстрагирует базы данных (легко переключаться с одной базы данных на другую с минимальной модификацией кода). Знаете ли вы несколько образцов сайтов или учебных пособий с хорошим качеством?

Конкретные целевые базы данных следующие:
1. Microsoft SQL Server
2. Оракул
3. MySQL
3. DB2

Мои конкретные требования и возникшие проблемы следующие:
1. Абстракция классов, используемых в доступе к данным.
2. Использование параметров при вызове хранимых процедур. В Microsoft SQL Server @ нормально. Другие базы данных не поддерживают @.
3. Преобразование синтаксиса запроса из одной базы данных в другую. Есть ли у нас какой-то «общий» запрос, а затем создаются классы, которые генерируют запросы к целевой базе данных?
4. Строго типизированные наборы данных в слое доступа к данным. По опыту я помню, что мастер TableAdapter и Query в Visual Studio не сработал для MySQL.

Заранее благодарю за ваш опыт и время.

Ответы на вопрос(3)

Ваш ответ на вопрос