从以下位置迁移应用程序有哪些考虑因素 NHibernate 1.2到2.0?相比之下,什么是重大变化?建议更改?

是否存在映射问题?

有帮助吗?

解决方案

NHibernate 2.0 中的重大变化

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

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

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

其他提示

我在这里找到了答案:

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)
    • 命名策略
    • 类型
    • 实体持久化
    • I版本类型
    • IBatcher
    • IUserCollectionType
    • I增强型用户类型
    • 属性访问器
    • ValueTypeType 重命名为 PrimitiveType
  • 外部框架可能发生的重大变化

  • 各种类在命名空间之间移动
  • 各种类已重命名(以匹配 Hibernate 3.2 名称)
  • ISession 接口有附加方法
  • 缓存提供者
  • I标准
  • 标准查询翻译器

  • 初始化时间

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

  • 运行

    • SaveOrUpdateCopy() 返回实体的新实例,而不更改原始实例
    • AutoFlush 不会在事务外部发生 - 数据库事务从来都不是可选的,与数据库的所有通信都必须在事务内部发生,无论您读取或写入数据如何。
    • NHibernate 将为 SQL Server 上的 count(*) 查询返回 long
    • <公式> 需要时必须包含括号
    • 这些 HQL 函数名称可能会导致您的 HQL 保留名称发生冲突:
      • 子串
      • 定位
      • 修剪
      • 长度
      • 位长度
      • 合并
      • 无效
      • 腹肌
      • 模组
      • 开方
      • 降低
      • 投掷
      • 提炼
      • 连接
      • 当前时间戳
      • 系统日期
      • 第二
      • 分钟
      • 小时
      • 斯特
    • <any> 当 meta-type=”class” 时,持久类型是包含 Class.FullName 的字符串
      • 为了在查询中设置参数,您必须使用 SetParameter(”paraName”, typeof(YourClass).FullName, NHibernateUtil.ClassMetaType)

  • 测绘

  • <任何>:默认元类型是“string”(原为“class”)
  • 许可以下: CC-BY-SA归因
    不隶属于 StackOverflow
    scroll top