![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
У меня есть приложение, которое на данный момент работает с SQLite. В будущем возможно прийдётся его перевести на Oracle либо на SQLServer. Задача состоит в том, что бы сейчас сделать код более гибким. То есть мне нужно что бы переход с одной СУБД на другую совершался быстро (что бы не нужно было лопатить весь код и перестраивать его) По этому поводу в инете нашёл DAO Pattern, но судя по всему он работает под Java. Если я ошибаюсь, поправьте меня. Посоветуйте, что можно сделать в данном случае, дабы упростить себе в дальнейшем жизнь. Если можно, скиньте ссылки на ресурсы, где такая вещ реализована.
|
|||
|
||||
| Kanes |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
Все провайдеры данных ADO.NET наследуются от абстрактных классов, таких как DbCommand, DbConnection, DbDataReader и прочие, т.е. если вы не используете в коде специфичных для конкретной БД фич, то спокойно можете использовать эти базовые классы. А конкретную БД можно задавать, например, в app.config. Так же в ADO.NET есть такой класс - DbProviderFactory, который облегчает разработку гибкого кода для работы с БД.
Примеры работы можно посмотреть в MSDN Объекты DbProviderFactory (ADO.NET) --------------------
Big gun - big future |
|||
|
||||
| Exai1e |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: 4 Всего: 30 |
N1ko, я делаю так: например есть в бд таблица "Группы" создают класс Group. Самый нижний слой - работает с бд (sql запросы, и прочее, что может придется потом менять при переходе на другую бд, например:
Класс группа
слой который работает с базой данных (который если надо можно поменять, в зависимости от БД)
и слой с которым будет работать программа:
не знаю, насколько это правильно и хорошо -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
||||||
|
|||||||
| Kanes |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
Насчет OleDb - будет работать только с теми БД, которые поддерживают протокол OLE DB.
Из Троелсена:
--------------------
Big gun - big future |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: 4 Всего: 30 |
Kanes, я знаю (просто у меня используется FireBird), но если понадобиться например использовать MS SQL то придется только переделать код в классе GroupManager, а класс который работает не посредственно с программной DataManager, трогать будет не обязательно. То есть вся логика и прочее в классе DataManager как была так и останется.
-------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| Kanes |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
Exai1e, да переделать, что не всегда удобно, если использовать подход который я предлагаю будет еще проще. Вот из Троелсена пример:
В коде меняются только строчки связанные с чтением app.config, в самом app.config меняются только два параметра --------------------
Big gun - big future |
||||
|
|||||
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
А DataProviderFactory работает с SQLite. В описании кажись не было её поддержки.
|
|||
|
||||
| Kanes |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
ЕМНИП, фабрика работает только с поставщиками, которые поставляет Microsoft, но ее можно не использовать. Вот другой код:
--------------------
Big gun - big future |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |