代码之家  ›  专栏  ›  技术社区  ›  Chris Conway

NHibernate 1.2至2.0迁移

  •  6
  • Chris Conway  · 技术社区  · 17 年前

    从迁移应用程序时需要考虑哪些因素 NHiBiNATE 1.2到2?什么是中断更改与建议更改?

    是否存在映射问题?

    2 回复  |  直到 11 年前
        1
  •  8
  •   Matt Hinze    17 年前

    Breaking changes in NHibernate 2.0

    如果你有很好的测试覆盖率,那就很忙了。

    编辑:我们今天早上升级了。没有什么大不了的。删除后必须刷新()会话。表达式命名空间已重命名为条件。所有这些都包含在上面的链接中。映射不需要更改。它相当透明。哦,还有交易 到处 但你可能已经这样做了。

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

        2
  •  2
  •   Chris Conway    17 年前

    我在这里找到了答案:

    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.Criteria
      • iInterceptor有其他方法。(IsUnsaved被重命名为IsTransient)
      • 引入策略
      • 伊米普
      • IEntityPersister
      • IV型
      • 比彻
      • IUserCollection类型
      • IEnhancedUserType(IEnhancedUserType)
      • I属性访问器
      • 已重命名为PrimitiveType的ValueTypeType
    • 外部框架的可能破坏性更改

    • 在命名空间之间移动了各种类
    • 已重命名各种类(以匹配Hibernate 3.2名称)
    • ISession接口有其他方法
    • IC卡提供商
    • ICRITION
    • 标准查询转换器

  • 初始化时间

    • <app.config中的nhibernate>部分不再受支持,将被忽略。配置文件和app.config的配置架构现在相同,app.config节名称为:<hibernate configuration>
    • <休眠配置具有不同的架构,所有属性名称都已选中
    • 配置属性不再以_156;hibernate._157;作为前缀,如果在指定_156;hibernate.dialect_157;之前,您只需指定__dialect_157;
    • 初始化时将验证所有命名查询,如果任何查询无效,将引发异常(如果需要,可以禁用)。
    • 对代理类进行更严格的检查(所有公共方法都必须是虚拟的)

  • 运行时间

    • saveorupdatecopy()返回实体的新实例,而不更改原始实例
    • 自动刷新不会发生在事务外部-数据库事务永远不是可选的,与数据库的所有通信都必须发生在事务内部,无论您读或写什么数据。
    • 对于SQL Server上的count(*)查询,nhibernate将返回long。
    • <公式在需要时必须包含括号
    • 这些hql函数名可能导致hql中的冲突保留名称为:
      • 子串
      • 定位
      • 修剪
      • 长度
      • 位长
      • 聚结
      • 相等返回为空
      • 防抱死制动系统
      • 国防部
      • 平方正交函数
      • 上面的
      • 降低
      • 铸造
      • 提取液
      • 康塔特
      • 当前时间戳
      • 相册
      • 第二
      • 分钟
      • 小时
      • 白天
      • STR
    • <任何>当meta type=_ class_时,持久类型是包含class.fullname的字符串
      • 要在查询中设置参数,必须使用setParameter(_157;paraname_157;,typeof(yourclass).fullname,nhibernateutil.classmetatype)

  • 映射

  • <任何>:默认元类型为__string_(was__class_)