NHibernate 1.2到2.0迁移

时间:2008-08-26 01:59:00

标签: nhibernate

将应用程序从 NHibernate 1.2迁移到2.0有哪些注意事项?什么是重大变化与建议的变更?

是否存在制图问题?

2 个答案:

答案 0 :(得分:8)

Breaking changes in NHibernate 2.0

如果你有良好的测试覆盖率,那就是繁忙的工作。

编辑:我们今天早上升级了。没什么大不了的。删除后,您必须Flush()会话。 Expression命名空间已重命名为Criterion。所有这些都包含在上面的链接中。映射不需要改变。它非常透明。哦,交易无处不在,但你可能已经这样做了。

顺便说一下,这里有一个有趣的变化:http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx

答案 1 :(得分:2)

我在这里找到了答案:

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

的突然变化
  • 基础设施

  • 编译时间

    • NHibernate.Expression命名空间已重命名为NHibernate.Criterion
    • IInterceptor有其他方法。 (IsUnsaved已重命名为IsTransient)
    • INamingStrategy
    • ITYPE
    • IEntityPersister
    • IVersionType
    • IBatcher
    • IUserCollectionType
    • IEnhancedUserType
    • IPropertyAccessor
    • ValueTypeType重命名为PrimitiveType
  • 外部框架可能的重大变化

  • 在命名空间之间移动了各种类
  • 已重命名各种类(以匹配Hibernate 3.2名称)
  • ISession界面有其他方法
  • ICacheProvider
  • ICriterion
  • CriteriaQueryTranslator

  • 初始化时间

    • < NHibernate的>不再支持App.config中的section,将被忽略。配置文件和App.config的配置架构现在完全相同,App.config部分名称为:< hibernate-configuration>
    • <冬眠-结构>有一个不同的架构,所有的属性名称都是cheked
    • 配置属性不再以“hibernate”作为前缀,如果在您指定“hibernate.dialect”之前,现在只指定“dialect”
    • 所有已命名的查询都将在初始化时验证,如果有任何无效,则会抛出异常(如果需要可以禁用)
    • 更严格地检查代理类(所有公共方法必须是虚拟的)

  • 运行时间

    • SaveOrUpdateCopy()返回实体的新实例,而不更改原始
    • AutoFlush不会发生在事务之外 - 数据库事务永远不是可选的,所有与数据库的通信都必须在事务内部发生,无论您读写数据还是什么。
    • NHibernate将为SQL Server上的count(*)查询返回很长时间
    • <式GT;必要时必须包含括号
    • 这些HQL函数名称可能会导致您的HQL保留名称冲突:
      • 定位
      • 修剪
      • 长度
      • BIT_LENGTH
      • 聚结
      • NULLIF
      • ABS
      • MOD
      • SQRT
      • 铸造
      • 提取
      • 的concat
      • CURRENT_TIMESTAMP
      • SYSDATE
      • 第二
      • 分钟
      • 小时
      • STR
    • <任何>当meta-type =“class”时,持久化类型是包含Class.FullName的字符串
      • 要在查询中设置参数,必须使用SetParameter(“paraName”,typeof(YourClass).FullName,NHibernateUtil.ClassMetaType)

  • 映射

  • <任何> :默认元类型是“字符串”(是“类”)