Ну, как уже отмечали другие, постарайтесь абстрагироваться от реальных классов. Это может включать использование интерфейсов, как указывает AHd54, или что-то подобное.
Это только даст вам половину пути.
SQL, который вам нужно выполнить, также будет иметь различия, такие как:
- Синтаксис имени параметра
- Позиционные параметры и именованные параметры
- Имена функций
- Некоторые синтаксические различия, например, как указать , дайте мне только первые N строк
Если вам нужно охватить все эти вещи, и вы не можете или не будете использовать ORM (хотя они редко дают вам 100%), то одним из способов будет создание ваших собственных классов, которые абстрагируют не только задействованы фактические классы, но также выполняет некоторый тип переписывания SQL для обработки различий в коде.
Я пошел по пути переписывания, поэтому, если вам нужны указатели на него, добавьте комментарий к этому ответу с вопросами, и я обновлю ответ соответствующим образом.