NHibernate 1,2 до 2,0 миграции - PullRequest
       36

NHibernate 1,2 до 2,0 миграции

6 голосов
/ 26 августа 2008

Какие существуют факторы при переносе приложения с NHibernate 1.2 на 2.0? В чем суть критических изменений и рекомендуемых изменений?

Есть ли проблемы с отображением?

Ответы [ 2 ]

8 голосов
/ 26 августа 2008

Сильные изменения в NHibernate 2.0

Если у вас хорошее тестовое покрытие, это занятая работа.

Редактировать: Мы обновились сегодня утром. В этом нет ничего серьезного. Вы должны очистить () сеанс после удаления. Пространство имен Expression переименовано в Criterion. Все это описано в ссылке выше. Отображения не нуждаются в изменениях. Это довольно прозрачно. Да, и транзакции везде , но вы, вероятно, уже делали это.

Кстати, вот интересный взгляд на изменения: http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx

2 голосов
/ 26 августа 2008

Я нашел ответ здесь:

http://blog.domaindotnet.com/2008/08/24/nhibernate-20-gold-released-must-wait-for-linq-to-nhibernate/

золото выпуска 2.0.0.GA

ИЗМЕНЕНИЯ НАРУШЕНИЯ от NH1.2.1GA до NH2.0.0

  • Инфраструктура

    • .NET 1.1 больше не поддерживается
    • Nullables.NHibernate больше не поддерживается (используйте типы .NET 2.0, допускающие значение NULL)
    • Contrib перемещен. Новое место
  • Время компиляции

    • Пространство имен NHibernate.Expression было переименовано в NHibernate.Criterion
    • II-рецепторы имеют дополнительные методы. (IsUnsaved был переименован в IsTransient)
    • INamingStrategy
    • IType
    • IEntityPersister
    • IVersionType
    • IBatcher
    • IUserCollectionType
    • IEnhancedUserType
  • ValueTypeType переименован в PrimitiveType

Возможные критические изменения для внешних каркасов

  • Различные классы были перемещены между пространствами имен
  • Различные классы были переименованы (для соответствия именам Hibernate 3.2)
  • Интерфейс ISession имеет дополнительные методы
  • ICacheProvider
  • ICriterion
  • CriteriaQueryTranslator

Время инициализации

  • в App.config больше не поддерживается и будет игнорироваться. Схема конфигурации для файла конфигурации и файла App.config теперь идентична, а имя раздела App.config:
  • имеет другую схему, и все имена свойств проверяются
  • свойства конфигурации больше не имеют префикса «hibernate». Если раньше вы указывали «hibernate.dialect», теперь вы указываете просто «dialect»
  • Все именованные запросы будут проверены во время инициализации, будет сгенерировано исключение, если какой-либо из них недействителен (при необходимости его можно отключить)
  • Более строгие проверки для прокси-классов (все открытые методы должны быть виртуальными)

Время выполнения

  • SaveOrUpdateCopy () возвращает новый экземпляр сущности без изменения исходного
  • Автозаполнение не будет происходить вне транзакции - транзакции базы данных никогда не являются необязательными, все взаимодействие с базой данных должно происходить внутри транзакции, независимо от того, какие данные вы читаете или пишете.
  • NHibernate будет возвращать длинные для запросов count (*) на SQL Server
  • должен содержать скобки при необходимости
  • Эти имена функций HQL могут вызвать конфликт в ваших зарезервированных именах HQL:
    • подстрока
    • найти
    • отделка
    • длина
    • bit_length
    • 1123 * COALESCE *
    • NULLIF
    • ABS
    • мода
    • SQRT
    • нижняя
    • литье
    • экстракт
    • CONCAT
    • current_timestamp
    • SYSDATE
    • второй
    • минут
    • час
    • день
    • месяц
    • год
    • 1159 * ул *
  • когда meta-type = ”class” постоянным типом является строка, содержащая Class.FullName
    • Чтобы установить параметр в запросе, вы должны использовать SetParameter (”paraName”, typeof (YourClass) .FullName, NHibernateUtil.ClassMetaType)

Mapping

: мета-тип по умолчанию - «строка» (был «класс»)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...