把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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:132585
用户头像

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

关注

评论

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

如何在 Unity3D 导入 Spine 动画

北桥苏

Unity3D Spine

HarmonyOS运动开发:如何监听用户运动步数数据

王二蛋和他的张大花

鸿蒙 运动健康

区块链ETF软件的功能分解

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

数智报告:一键合并精准高效

用友智能财务

用友 财务 数智化 智能财务 数智报告

实时分析利器|全面解读 YashanDB 列式存储引擎的核心技术

数据库砖家

数据库

YashanDB|磁盘被 archivelog 写满?教你快速排查与应对!

数据库砖家

数据库

「数」论|工业大模型黄金三角及新一代工业数据底座

麦杰科技

基于DeepSeek的故障定位大揭秘

乘云数字DataBuff

可观测性 故障定位 运维监控 大模型 DeepSeek

开放注册!RootTalk Sandbox沙盒系统正式上线

乘云数字DataBuff

可观测性 故障定位 Demo 运维监控

万界星空科技QMS质量管理系统几大核心功能详解

万界星空科技

万界星空科技 QMS 质量管理系统 生产质量管理 产品质量管理

技术干货|YashanDB + Zabbix 打造可视化监控平台,实操教程来啦!

数据库砖家

数据库

YashanDB 知识库|DBeaver 连接不上数据库?一招教你排查!

数据库砖家

数据库

YashanDB|遇到 YAS-02025 报错?教你快速定位与处理!

数据库砖家

数据库

AI 应用走向成功之路

柯杰

agent

iVX 组件化赋能后端开发新生态

代码制造者

组件化 后端开发 图形化编排

影响LED显示屏价格的三大因素

Dylan

产品 LED LED display LED显示屏 LED屏幕

如何用豆包做PPT?PPT自动生成全攻略!

职场工具箱

人工智能 PPT AIGC AI生成PPT 豆包

YashanDB|执行 SQL 报 YAS-04401?小心 BLOB 字段踩坑!

数据库砖家

数据库

征程 6 | 逆向自证hbm与bc一致性

地平线开发者

自动驾驶; 算法工具链 地平线征程6

《Operating System Concepts》阅读笔记:p821-p897

codists

操作系统

我的赛博朋克家族成员

玄兴梦影

键盘 NAS 电子产品 赛博朋克 设备

京东商品详情API接口使用攻略

tbapi

京东商品详情接口 京东API 京东商品详情API 京东数据采集

发件箱模式:打造微服务可靠消息传输

俞凡

架构 最佳实践 设计模式

ElatoAI:开源 ESP32 AI 语音 AI 玩具方案;凯叔推出 AI 故事玩偶「鸡飞飞」丨日报

RTE开发者社区

eBPF开发者大会上,乘云技术专家分享eBPF在故障定位场景中的应用

乘云数字DataBuff

可观测性 故障定位 运维监控 eBPF 技术 eBPF开发者大会

中关村科学城工业软件创新暨开源峰会在海淀成功举办

极客天地

CRaC 技术深度解析

mazhen

Java Linux Serverless Cloud Native crac

全开源、私有化部署!轻量级用户行为分析系统-ClkLog

ClkLog

开源 数据分析 埋点 用户行为分析 用户画像

为了管理我那混乱的提示词,我开发了梦精灵提示词管理器,一个浏览器插件

龙正哲

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