Предложения по подключаемому слою базы данных - PullRequest
3 голосов
/ 30 января 2011

В настоящее время я работаю над программным проектом, который использует базу данных SQL Server для хранения данных. Поскольку есть некоторые планы по переходу с SQL Server на Oracle, одним из требований является создание подключаемого уровня базы данных.

Итак, мой вопрос: как лучше всего это сделать?

Ответы [ 4 ]

1 голос
/ 30 января 2011

У вас есть много вариантов.Один из вариантов - использовать одну из различных структур Object Relational Mapper (ORM).NHibernate является популярным, но Microsoft Entity Framework (в v4) также является разумной возможностью, и он лучше интегрируется с Linq, если вам это интересно.

Второй вариант (не обязательно исключая вышеперечисленное) заключается в реализации чего-то вроде шаблона репозитория и запуске всего доступа к базе данных через уровень репозитория.Некоторые люди видят рамки ORM как замену шаблону Repository;другие видят добавленную стоимость слоя репозитория поверх платформы ORM.Реальное значение, которое дает вам репозиторий, - это возможность поменять слои ORM.Только вы знаете, является ли это разумной вероятностью, и даже если это так, для реализации дополнительного уровня репозитория может потребоваться больше усилий, чем просто привязать все заново к новому ORM.

1 голос
/ 30 января 2011

Я предлагаю использовать Entity Framework , гораздо проще, чем NHibernate, и очень быстро созревать. Для поддержки оракула в EF вам понадобится провайдер оракула .

Наряду с использованием Entity Framework я предлагаю использовать такой шаблон, как Шаблон репозитория . Таким образом, вы можете использовать Inpendency Injection , чтобы изменить реализацию по вашему выбору. Ваше приложение становится независимым от базы данных или самой ORM. Так что вы также можете использовать NHibernate, если хотите.

1 голос
/ 30 января 2011

Я бы рекомендовал использовать NHibernate для вашего уровня данных. С его помощью вы можете легко поменять конфигурацию для работы практически с любым драйвером базы данных.

NHibernate имеет хорошую поддержку для MsSQL и Oracle.

Вы можете написать все свои запросы на языке запросов Hibernates (HQL), который будет не зависеть от диалекта. Другим вариантом является использование поставщика linq в NHibernate 3 для получения строго типизированного доступа к данным.

Как уже упоминали некоторые другие, я бы также рекомендовал использовать шаблон репозитория и внедрить Unit of Work или SessionFactory.

Редактировать : Oracle выпустила бета-версию своего поставщика Entity Framework: http://thedatafarm.com/blog/data-access/oracle-entity-framework-beta-released-today/

1 : http://nhforge.org/Default.aspx## Заголовок ##

0 голосов
/ 30 января 2011

Если вы хотите пойти по пути ORM, вы можете использовать NHibernate, как предложил alexn, или Telerik OpenAccess ORM. Существует также EF провайдер для оракула и других СУБД, но они не бесплатны.

Если вы хотите создать весь DAL с нуля, используйте шаблон репозитория. Создайте интерфейс для хранилища и создайте каждого поставщика хранилища для каждой базы данных. Здесь обсуждается .

...