题
从以下位置迁移应用程序有哪些考虑因素 NHibernate 1.2到2.0?相比之下,什么是重大变化?建议更改?
是否存在映射问题?
解决方案
如果你有良好的测试覆盖率,那就很忙了。
编辑:今天早上我们升级了。没什么大不了的。删除后必须 Flush() 会话。表达式命名空间已重命名为 Criterion。所有这些都包含在上面的链接中。映射不需要更改。这是相当透明的。哦,还有交易 到处, ,但您可能已经这样做了。
顺便说一下,这里有一个有趣的变化: http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx
其他提示
我在这里找到了答案:
黄金版 2.0.0.GA
从 NH1.2.1GA 到 NH2.0.0 的重大变更
-
基础设施
- .NET 1.1 不再受支持
- 不再支持 Nullables.NHibernate(使用 .NET 2.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)
测绘
不隶属于 StackOverflow