Рекомендации для поддержки и Oracle Server и SQL Server в том же приложении ASP.NET с NHibernate

Наш клиент хочет к серверу поддержки и SQL Server и Oracle в следующем проекте. Наш опыт прибывает из платформы.NET/SQL Server. Мы наймем разработчика Oracle, но наше беспокойство с кодом DataAccess. NHibernate сделает Механизм DB прозрачным для нас? Я не думаю так, но я хотел бы получить известие от разработчиков, которые столкнулись с аналогичными ситуациями.

Я знаю, что этот вопрос немного неопределенен, потому что я не сделал, чтобы Oracle испытала, таким образом, я не знаю то, что выходит, мы найдем.

9
задан John Saunders 13 April 2010 в 02:25
поделиться

2 ответа

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

  • Сначала спроектируйте вашу объектную модель.
  • Не используйте код, специфичный для базы данных. Вам нужен человек с хорошим опытом работы с C#, а не разработчик Oracle. Не полагайтесь на такие вещи, как триггеры, хранимые процедуры и т.д.
  • Позвольте NHibernate генерировать схемы БД, по крайней мере, на начальном этапе (вы можете настроить такие вещи, как индексы, позже) Он выберет лучшие доступные типы данных для каждой БД.
  • Используйте генератор POID, не зависящий от БД (hilo или guid), вместо последовательностей или идентификаторов.
  • Старайтесь избегать использования SQL. HQL и Linq прекрасно работают в 99% случаев.
  • Избегайте функций NH, которые поддерживаются не всеми вашими целевыми БД (например, Future, MultiCriteria и т.д.)

У NHibernate отличное сообщество. Вы всегда можете задать свои вопросы в http://groups.google.com/group/nhusers, помимо публикации здесь.

8
ответ дан 4 December 2019 в 21:48
поделиться

Необходимо учитывать три вещи: объект ISession, генерируемые SQL-запросы и ваши простые-старые-clr-объекты, отображаемые в таблицы.

NHiberante сгенерирует необходимые SQL-запросы на основе выбранного диалекта базы данных. Если вы настроите NHibernate для использования диалекта SQL Server, он будет генерировать правильные операторы SQL SQL Server. Это можно легко настроить динамически во время выполнения в зависимости от конфигурации.

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

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

См. http://codebetter.com/blogs/karlseguin/archive/2009/03/30/using-nhibernate-with-multiple-databases.aspx для некоторых примеров того, как вы можете абстрагироваться от базовая база данных вдали от создания и использования NHibernate.

1
ответ дан 4 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: