В настоящее время я разрабатываю приложение-конструктор запросов, в основном простой графический интерфейс, который должен позволить пользователям без знания SQL определять различные запросы в базе данных (объединяет, выбирает, обновляет , вставить, удалить). Я буду использовать .Net 3.5. Мое приложение должно поддерживать несколько баз данных, оно должно работать с MS-SQL Server, MySQL и Oracle, поэтому я был бы признателен за любые подсказки или ссылки на соответствующую лекцию по , как разработать независимый от поставщика DAL.Как создать независимый провайдер DAL (.Net)
Пользователь выберет сервер базы данных, базу данных на текущем сервере, предоставит учетные данные подключения, выберет различные таблицы, определит запросы (используя ряд комбинированных блоков) и, наконец, выполнит запросы, если они действительны. Конечно, в DAL я хочу иметь методы для каждого поставщика БД. Я что-то думаю о линиях фабричной структуры.
Примечание. Это простой школьный проект, поэтому меня не интересует безопасность или производительность полученных запросов.
ОБНОВЛЕНИЕ: После нескольких исследований и с очень ценным вводом, который вы предоставили, я решил использовать DbProviderFactory. ORM будет интересным, но поскольку я просто хочу анализатор/построитель запросов, я не вижу смысла использовать его. Поэтому я был бы признателен, если бы вы указали мне подробный учебник о том, как использовать DbProviderFactory и связанные классы.
Как в мире это поможет ему? Получение подходящей DbProviderFactory является жалкой 0,2% функциональности, наиболее сложной частью будет фактический синтаксис запроса, который не покрывается функциональностью DbProviderFactory _at all_. –
Он ничего не спрашивал о синтаксисе запроса. Он спросил о независимом от поставщика DAL. DbProviderFactory дает ему уже реализованный заводский шаблон, чтобы основать его DAL. Отсутствие функциональности связано с тем, что она должна иметь возможность работать с широким спектром СУБД и, таким образом, не использовать какие-либо специфические для производителей особенности баз данных. Если он придерживается прямых выборов, обновления, удаления и вставки там не должно быть никаких проблем. Но предоставлено, ORM дает вам больше. – 2009-04-21 13:26:22
Что касается использования ORM: если приложение имеет жестко запрограммированные бизнес-объекты, оно будет работать отлично. Но если приложение представляет собой простой построитель запросов/бегун без определенного домена (например, MS Query Analyzer), ORM не очень помогает, насколько мне известно. Пожалуйста, исправьте меня, если я ошибаюсь. Я не на 100% ссылаюсь на все виды использования ORM. – 2009-04-21 14:04:08