О чем следует помнить при обновлении NHibernate с 1.2 до 3.2?


Вопрос говорит сам за себя. Работа со старой кодовой базой, использующей NHibernate 1.2. Что я могу получить, и что я потеряю или испытаю боль, как часть этого обновления? Стоит ли общее усилие пользы, и если да, то каковы эти выгоды? И пока я этим занимаюсь, есть ли смысл просто перейти на беглый Нхибернайт?

3 2

3 ответа:

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

Я бы сделал одно изменение в то время. Так что заставьте его работать без Fluent и решите, стоит ли это делать, Перейдя на fluent. Вы также должны посмотреть QueryOver и использование linq.

Одна из самых интересных новых функций в NH 3.2 заключается в том, что теперь вы можете сопоставлять с кодом, а не с файлами HBL. Это та же самая функция, которая была у FNH в течение многих лет, но интегрирована в основной проект NH.

Я сам не использовал это в NH (я большой поклонник FNH Automapping), но мое чтение показывает, что многие пользователи FNH считают это гораздо менее зрелым, чем эквивалент FNH.

Одна из областей, где FNH все еще на много миль опережает NH, - это вышеупомянутое автоматическое сопоставление. NH просто еще не делает этого (хотя есть некоторые вводящие в заблуждение сообщения в блогах, которые подразумевают, что это так).

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

Наконец, поскольку я пишу это, нет официального релиза для FNH с NH 3.2. Я экспериментировал с последними сборками FNH (1.3), и это "еще не совсем там". Но это, вероятно, будет скоро.

Nhibernate 3.2 имеет в основном функциональный поставщик Linq, что хорошо, если вам нравится Linq.