Мы разрабатываем набор промышленных приложений, использующих SQL Server.
По мере расширения спроса клиенты хотят использовать наши приложения со своими собственными СУБД, такими как Oracle, MySQL и др.
В настоящее время некоторые приложения используют поставщик OLEDB, а другие используют собственный SQLServer по разным причинам, включая опыт программирования и религию.
Мы ищем единый подход. Руководитель проекта предпочитает OLEDB, потому что «он работает со всем». Лично я ненавижу это, потому что, как обрабатываются параметры запросов ...
Я имею в виду два решения:
Первый - использовать SQLOLEDB, сохраняя существующий код, и адаптировать каждый оператор SQL в случае несовместимости с помощью инструкций ветвления. Это будет происходить очень быстро, SQL не будет сильно отличаться, и это порадует менеджера проекта. Однако это может превратить код в спагетти.
Вторым будет использование собственного поставщика ADO.NET для каждой СУБД и разработка библиотеки доступа к данным для каждой. Каждая библиотека может содержать общую часть, чтобы избежать дублирования кода. Конечно, это займет некоторое время, но это приведет к чистой архитектуре и оптимальной производительности.
В основном это клиент-серверные приложения. Некоторые части нашей базы данных генерируются динамически, и существует множество динамических запросов. Вот почему использование ORM невозможно.
Как бы вы попытались достичь той же цели?