Исходя из вашего опыта, многие ли из вас порекомендовали бы беглый NHibernate поверх Nhibernate для моего нового проекта? - PullRequest
8 голосов
/ 27 апреля 2009

Я просто хочу сделать быстрый опрос, чтобы узнать, хорошо ли принят Fluent Nhibernate или у него много проблем. Мне нравится Nhibernate, но я определенно вижу проблему с отображением в xml.

Итак, я с нетерпением жду членов сообщества для некоторого понимания и помочь мне выбрать одно над другим.

В настоящее время я не рассматриваю ни linq2sql, ни инфраструктуру сущностей.

Ответы [ 5 ]

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

Мне нравится Fluent NHibernate, и я думаю, что он достаточно зрелый, если вы собираетесь начать новый проект. Использование его в новом проекте должно позволить проекту Fluent NHibernate продолжать развиваться по мере вашего продвижения. Существует возможность прерывания изменений (как это недавно произошло с отображениями конвенций), но вы должны быть в состоянии справиться с ними. У меня было несколько проблем с отображениями, но проект довольно отзывчив на сообщения об ошибках и в основном работал как ожидалось.

Параметры отображения:

  • Отображения XML - стандарт NHibernate. Проблемы с обслуживанием хорошо известны, но преимущество заключается в том, что у вас есть доступ ко всем параметрам конфигурации, предоставляемым NHibernate. Есть несколько менее используемых параметров конфигурации, которые все еще добавляются в Fluent (по крайней мере, в прошлый раз, когда я обратил внимание). Так что, если вы ожидаете каких-то сумасшедших отображений, вы можете рассмотреть этот вариант.

  • Стандартное картографирование - предоставляется свободно. Вы можете создавать сопоставления с помощью кода, и это намного лучше для рефакторинга и авторинга. По моему опыту, не так много, чтобы сказать об этом, кроме того, что он работает хорошо и является большим улучшением опции xml.

  • Автоматическое картирование - предоставляется свободно. Позволяет вам отображать свойства объекта в соответствии с соглашением и пытается автоматически создавать сопоставления. Это хорошая идея, но я думаю, что у нее все еще есть зрелость. В настоящее время я использую этот метод сопоставления, и он отлично работает, но я закончил тем, что написал большое количество соглашений и определил объектные отношения, которые, как он чувствует, не спасли много усилий от стандартных сопоставлений.

Fluent NHibernate также предоставляет хороших помощников по тестированию для тестирования ваших сопоставлений и некоторых API-интерфейсов настройки, которые могут упростить настройку NHibernate. В целом, это хороший проект, который предоставляет некоторые приятные дополнительные функции для NHibernate.


редактирование:

Еще одна вещь, на которую следует обратить внимание: если вы начнете с Fluent NHibernate и решите, что он не будет работать для вашего сценария, вы можете легко перейти обратно к сопоставлениям xml. Свободный NHibernate позволяет вам экспортировать сопоставления, которые он создает, и вы можете использовать этот экспорт, чтобы не потерять какую-либо работу по сопоставлению, которую вы уже сделали.

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

Одним из лучших преимуществ использования Fluent Nhibernate по сравнению с vanilla NH является хорошее интеграционное тестирование с PersistenceSpecification <T>:

[Test]  
public void TestProductSave()  
  {  
   new PersistenceSpecification<Product>()  
      .CheckProperty(x => x.ProductName, "Wax")  
      .CheckProperty(x => x.Price, 20)  
      .VerifyTheMappings();  
  }  
1 голос
/ 27 апреля 2009

Как и любой хороший ответ, это зависит.

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

У меня уже было несколько проектов, использующих NHibernate, поэтому использовать отображение hbm не составило труда. После того, как я понял, как включить в схему hbm, все стало намного проще.

Единственное реальное преимущество, которое я получил от владения fluent-nhibernate, - это возможность рефакторинга классов моего домена и автоматическое изменение сопоставлений. На самом деле я не заметил такого большого увеличения скорости при написании отображений.

Как и все, YMMV.

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

Я свободно использую новый проект. Единственный незначительный удар, который я достиг на данный момент, заключается в том, что он не очень хорошо работает с Castle Windsor из коробки, но было достаточно легко расширить Windsor, чтобы выполнить эту работу. Кроме того, я люблю это. Это гораздо более кратко, чем сопоставления XML.

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

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

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

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

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