写点什么

NHibernate 移除了对 Iesi.Collections 类库的使用,并改进了对 SQL Server 2012 的支持

  • 2014-08-29
  • 本文字数:1388 字

    阅读完需:约 5 分钟

NHibernate 已经发布了 4.0 的 GA(Gammer)版,它提供了对.NET 4.0 的支持,移除了对 Iesi.Collections 类库的使用,并且加入了对某些 SQL Server 2012 特性的支持,例如序列(Sequence)及查询分页。

本次新版本的发布共包含三个主要变化:首先,新版本的 NHibernate 是基于.NET 4.0 创建的,这是一个破坏性的改变。由于这一变化,原先进行类映射时所使用的 lesi.Collection 类库中所定义的 ISet 类就被.NET 基础类库中的泛型类型 ISet所取代了。对于非泛型集合的持久化支持也同样被移除了。在.NET 4.0 版本之前,基础类库中还没有定义 ISet 这个接口,而当时 NHibernate 刚刚才从 Hibernate 移植到.NET 平台上。这也是在 NHibernate 中包含了对 lesi.Collections 类库的依赖的关键原因之一。由于.NET 4.0 中引入了 ISet这个接口,这个类库的引用就显得多余了,因此被最终移除。

请注意:NHibernate在内部仍然保持了对lesi.collections 类库的引用,但对于大多数用例来说,开发者们都可以直接使用.NET 基础类库即可完成任务。

此外,4.0 版本现在能够支持 ODP.NET ,即 Oracle 的托管 Data Provider for .NET,此外还支持 SQL Server 2012 中一些独有的新特性:

  • 序列 —— 类似于它对 Oracle 和 Postgres 实现的支持(在 2012 之前,SQL Server 中还不存在序列的概念,只有自动生成数字的主键列可以自增值)。
  • “iif”方法
  • 查询分页 —— 确保当 NH LINQ 中使用 Skip() 和 Take() 方法时,转换为 SQL Server 中相应的 OFFSET 和 FETCH 查询语法。

除此之外,新版本还包括一些新的改进。包括以下一些内容:

  • 在使用 QueryOver 进行转换时可以使用 Math.Round() 方法了。
  • 支持 SQL Server 所独有的 power() 函数。
  • NHibernateUtil 中的静态字段不再封装为可空类型(NullableType)或 IType 接口类型。
  • 支持 Postgresql 中的 Trigonometric 函数
  • Save/Update/SaveOrUpdate 等方法会加入一些新的重载,以实体名称作为参数。
  • 在多对多关系中也可使用 Where() 语法。

总的来说,新版本包括了超过一百个 bug 修复以及各种小改进,有一些改动有可能会造成破坏性改变。请务必阅读关于这次发布的说明,或者从 NH 的 JIRA 网站上获取完整的变更列表。

下一步计划

通过快速浏览 NH 的 JIRA 网站后,我们发现 4.1.0 版本的部分工作已经开始进行了,接下来会有一些有趣的新特性陆续到来:

  • 对 Oracle 12c 独有语法的支持。Oracle 12c 支持标识列、新的分页关键字(FETCH FIRST 与 OFFSET),以及一些新的类型(VARCHAR2、NVARCHAR2、RAW 等等)。
  • PrePersist 与 PreUpdate 属性(类似于 Hibernate 中对应的标注方式)
  • 可用于 WCF Data Services 的 NHibernateContext(作为 DataContext 的替代)
  • 节点中使用 property-refs

NHibernate 可能会加入对 WCF Data Services 的支持,这一点令人很感兴趣,尤其是在 WCF Data Services 的前景不明的情况下(虽然有一些非议,但 WCF Data Services 中还是加入了 EF6 的支持)。

NHibernate 是一个成熟的开源对象关系映射框架,它是从面向 Java 世界的 Hibernate 框架移植过来的。NHibernate 曾一度是毫无争议的首选 ORM 框架,但随着微软推出 Entity Framework,并且如今已经成为了开源产品之后,人们对于 NH 的未来也开始抱有一丝疑虑(当然,还是有许多人争辩之后依然推崇NHibernate)。

查看英文原文: NHibernate Lets Go Of Iesi.Collections, Improves Support For SQL Server 2012

2014-08-29 08:132287
用户头像

发布了 428 篇内容, 共 185.8 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

高扩展的系统通常会有什么特性

卢卡多多

系统、 9月日更

内卷把同事逼成了“扫地僧”,把 Github 上所有面试题都整理了一遍~足足 24W 字!

Java 程序员 面试

自研ISP芯片背后:手机厂商的目光在影像之外

脑极体

天壤完成新一轮战略融资 加速构建数字化转型通用智能平台

InfoQ 天津

Redis核心原理与实践--散列类型与字典结构实现原理

binecy

数据结构 源码阅读 Redis 6.0

带你读论文丨基于视觉匹配的自适应文本识别

华为云开发者联盟

损失函数 视觉 文本识别 文档识别 视觉匹配

什么是低代码自动化以及它如何使你受益?

低代码小观

程序员 自动化 工具 低代码 低代码开发平台

推荐一款 Python 微服务框架 - Nameko

星安果

Python 微服务 Nameko

我仅用了3个月就成功破茧成蝶!从简历被拒到收割8个大厂offer的辛酸历程!

编程 Java、 计算机

数据安全与隐私系列08:大数据与电影《少数派报告》

Databri_AI

人工智能

Linux之常见的存储架构

在即

9月日更

低代码平台的功能及其用处

低代码小观

程序员 低代码 开发工具 低代码开发平台 无代码

网络攻防学习笔记 Day149

穿过生命散发芬芳

9月日更 网络管理

考试试卷存储设计

guangbao

回帖抽大奖——5分钟极速体验AI技术能力

百度大脑

人工智能

大厂面试喜欢考算法,该怎么破?

博文视点Broadview

字节内部不传之秘:1298页算法刷题笔记(附源码可直接运行)

Java 程序员 面试

p3c 插件,是怎么检查出你那屎山的代码?

小傅哥

小傅哥 代码规范 p3m pmd 开发手册

一文带你了解经典的Java垃圾回收机制

华为云开发者联盟

Java JVM 对象 垃圾回收机制 垃圾收集器

腾讯高工终于把操作系统、TCP/IP、线程与进程、CPU全部讲明白了

Java 架构 面试 操作系统 计算机

内部群炸了!字节同事写了一篇Leetc刷题心得,高管看见之后,直接给他涨了20K

算法 算法题

linux之秘钥登录

入门小站

Linux

在线985,211高校查询

入门小站

工具

2B 销售系统设计需要考虑的 3 个层面

boshi

团队管理 销售管理

JavaScript “上层”语言

Augus

JavaScript 9月日更

密码学系列之:1Password的加密基础PBKDF2

程序那些事

算法 加密解密 密码学 程序那些事

靠着狂刷这份面试题跟答案!我从 15K 变成了 30K!

Java 编程 程序员

如何做到监控告警的管理?

睿象云

运维 告警 监控告警 运维平台 告警管理

吃串串,数签签,这个AI神器一秒搞定

百度大脑

人工智能 EasyDL

[微服务] You built it.You fix it.

baiyutang

微服务 9月日更

MLOps生产中的机器学习:为什么你应该关心数据和概念漂移 易筋 ARTS 打卡 Week 67

John(易筋)

ARTS 打卡计划

NHibernate移除了对Iesi.Collections类库的使用,并改进了对SQL Server 2012的支持_语言 & 开发_Roopesh Shenoy_InfoQ精选文章