微信号:infoqchina

介绍:有内容的技术社区媒体

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

2014-09-02 22:03 InfoQ

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

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

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

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

  • 序列 —— 类似于它对OraclePostgres实现的支持(在2012之前,SQL Server中还不存在序列的概念,只有自动生成数字的主键列可以自增值)。

  • iif”方法。

  • 查询分页 —— 确保当NH LINQ中使用Skip()Take()方法时,转换为SQL Server中相应的OFFSETFETCH查询语法。

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

  • 在使用QueryOver进行转换时可以使用Math.Round()方法了。

  • 支持SQL Server所独有的power()函数。

  • NHibernateUtil中的静态字段不再封装为可空类型(NullableType)或IType接口类型。

  • 支持Postgresql中的Trigonometric函数

  • Save/Update/SaveOrUpdate等方法会加入一些新的重载,以实体名称作为参数。

  • 在多对多关系中也可使用Where()语法。

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

下一步计划

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

  • Oracle 12c独有语法的支持。Oracle 12c支持标识列、新的分页关键字(FETCH FIRSTOFFSET),以及一些新的类型(VARCHAR2NVARCHAR2RAW等等)。

  • PrePersistPreUpdate属性(类似于Hibernate中对应的标注方式)

  • 可用于WCF Data ServicesNHibernateContext(作为DataContext的替代)

  • <join>节点中使用property-refs

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

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


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 一个简单登陆示例的MVC和MVP实现 PingCAP 第9期 NewSQL Meetup 【第159期】2015前端框架何去何从 数据科学家获取更高薪资的几点建议~ React Native开发技术周报第十三期