Приложение, которое работает в базах данных SQL Server и Oracle - PullRequest
0 голосов
/ 25 апреля 2009

Каков наилучший подход для создания небольшого (но масштабируемого) приложения, которое работает с Sql Server или Oracle?

Я заинтересован в создании приложений, поддерживающих несколько баз данных, в процессе создания этой функции.

Ответы [ 6 ]

4 голосов
/ 27 апреля 2009

В дополнение к комментариям ORM; иногда жизнь не так проста.

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

Вам может потребоваться сделать что-то сложное из соображений производительности, специфичное для одной платформы базы данных. Например, создание нового раздела в Oracle.

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

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

4 голосов
/ 25 апреля 2009

Использование ORM , который поддерживает несколько баз данных, является первым шагом здесь. Например, вы можете посмотреть NHibernate или Entity Framework - оба имеют поддержку Oracle и SQL Server. Таким образом, вам просто нужно поменять отображения базы данных, чтобы приложение работало на любой СУБД.

Редактировать - благодаря tvanfosson добавлена ​​ссылка 'new' для nhibernate.

2 голосов
/ 25 апреля 2009

Я бы предложил использовать существующую (бесплатную) среду, например nHibernate , которая абстрагирует для вас зависимость от базы данных. В качестве альтернативы вам нужно определить свой собственный уровень абстракции, который может взаимодействовать с драйверами для любой из двух баз данных.

1 голос
/ 25 апреля 2009

Как отмечают многие, использование ORM может решить вашу проблему. Я использовал LLBLGen с большим успехом. В качестве альтернативы вы можете использовать интерфейсы IConnection, ICommand и т. Д. Для развертывания собственной ConnectionFactory.

1 голос
/ 25 апреля 2009

в качестве дополнения к другим ответам вы должны взглянуть на архитектуру DbProviderFactories в ADO.Net ... немного низкопрофильную, но, возможно, полезную для вас.

0 голосов
/ 25 апреля 2009

Я бы использовал OR / M. Большинство из них поддерживают множество различных поставщиков баз данных и имеют независимый от базы данных язык для выполнения запросов и тому подобное.

Я могу порекомендовать NHibnernate для C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...