Приложение на основе SubSonic, которое подключается к нескольким базам данных - PullRequest
1 голос
/ 16 января 2010

В настоящее время я разработал приложение, которое подключается к базе данных SQL Server 2005, поэтому мои объекты DAL были сгенерированы с использованием информации из этой БД.

Также будет возможно подключение к базе данных Oracle и MySQL с одинаковыми структурами таблиц (кроме обычных различий в полях, таких как varbinary (max) в SQL Server и BLOB в Oracle и т. Д.) , Для этого я уже определил несколько строк подключения и несколько поставщиков SubSonic для разных БД, на которых будет работать приложение.

У меня вопрос: если я сгенерировал свои объекты с использованием базы данных SQL Server, должны ли сгенерированные объекты работать прозрачно с другими БД или мне нужно генерировать разные DAL для каждого механизма базы данных, который я использую? Должен ли я знать о возможных ошибках, с которыми я могу столкнуться при выполнении этих операций?

Заранее благодарим за любые советы по этому вопросу.

1 Ответ

0 голосов
/ 19 февраля 2010

Кстати, я использую SubSonic 2.2 ...

Из того, что я смог проверить до сих пор, я не вижу простого способа достичь того, что я пытаюсь сделать.

Идеальной ситуацией для меня было бы создание объектов SubSonic, например, с использованием SQL Server, и возможность просто динамически переключаться на MySQL, просто создавая во время выполнения правильный поставщик для него вместе со строкой подключения. Я попал в точку, в которой мое приложение правильно подключилось бы с SQL Server к базе данных MySQL, но в какой-то момент приложение перестало работать, так как SubSonic внутренне генерирует запросы вида

SELECT * FROM dbo.MyTable

, который MySQL не поддерживает явно. Я также заметил запросы, заключившие имена таблиц в квадратные скобки ([]), поэтому кажется, что существует ряд факторов, которые ограничивают использование одного провайдера для нескольких механизмов БД.

Полагаю, мой единственный другой вариант - это разобраться с несколькими сгенерированными провайдерами, хотя я должен признать, что мне неудобно знать, что в моем проекте будет N копий практически одинаковых классов.

Мне бы очень хотелось услышать от кого-либо еще, если бы у них был подобный опыт. Я обязательно опубликую свои результаты, как только все уладится и будет работать для моего проекта.

Что-нибудь изменилось в 3.0? Это определенно было бы достойной причиной для меня, если бы жизнь в этом вопросе была легче ...

...