2013-08-26 2 views
0

Я новичок в NHibernate и думал использовать его в проекте, который может поддерживать различные базы данных, такие как (Oracle, MySQL, SQl Server, DB2 и т. Д.), Поскольку этот продукт может быть отправлен другим клиентам которые могут использовать разные базы данных по своему выбору. Однако схема другой базы данных останется такой же.Несколько драйверов базы данных в NHibernate

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

1) необходимо специально установить отдельные драйверы баз данных или они приходят с установкой NHibernate ли? Я не мог найти никаких драйверов с установочными файлами NHibernate.

2) Возможно ли, что только изменение параметров конфигурации и т. Д. Мое приложение может разговаривать с разными базами данных? то есть, если код не будет отправлен клиенту, который может использовать какую-либо из базы данных oracle/DB2/SqlServer и т. д., никаких изменений кода, кроме параметров конфигурации, не требуется?

+0

Посмотрите на классы в пространствах имен NHibernate.Dialect и NHibernate.Driver. Также см. Http://nhforge.org/doc/nh/en/index.html#configuration-optional-dialects. Он работает «из коробки», потому что вам не нужно писать код, чтобы он работал. Вы, очевидно, должны иметь соответствующие классы соединений ADO.NET (драйверы a.k.a.), на которые ссылаются. Если эти классы доступны, NHibernate сможет их использовать. –

ответ

0

Ответ на ваши вопросы:

1) Нет, NHibernate не корабля водителей. Вы должны искать их в другом месте. Я, например, использую Npgsql с PostgreSQL.

2) Это очень возможно, если вы изменили свой драйвер и строку соединения, чтобы начать использовать другую базу данных без серьезных проблем (также, избегая специфичных для db сопоставлений, таких как последовательности или идентификаторы для генерации id). Я недавно перешел из SQL Server в PostgreSQL; так что у вас есть представление о том, как хорошо это произошло, мигрированный продукт запрашивал более 70 таблиц с API-интерфейсами HQL, Criteria и Linq для NHibernate, и у нас была только проблема с разными сопоставлениями в обеих базах данных, что не касается NHibernate вообще. На мой взгляд, до тех пор, пока вы будете придерживаться NHibernate для запросов, вы будете в безопасности.

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

+0

Просто запрос, почему мы говорим, что NHibernate из коробки поддерживает вышеупомянутые базы данных. Говорят, что EF из коробки поддерживает только SQl-сервер, тогда как NHibernate поддерживает Db как Oracle, MySQL, SQl Server, DB2. Я что-то пропустил. – Sarvesh

+0

Водителям необходимо реализовать определенные функции, специфичные для Entity Framework, для работы с ним. NHibernate нуждается в драйверах для реализации гораздо более основных функций ADO.NET. Оба могут работать со многими базами данных, но драйверы должны быть немного более «продвинутыми» для работы с Entity Framework. Проверьте http://msdn.microsoft.com/en-us/data/dd363565.aspx для драйверов, совместимых с EF, если вы хотите. –