.NET ORM框架NHibernate Linq 1.0發(fā)布
近日,NHibernate Forge宣布NHiberante Linq 1.0正式發(fā)布。NHibernate以其靈活的O/R Mapping功能成為了.NET領(lǐng)域最有影響力,運用最廣的ORM框架之一,它在某些社區(qū)群體的受歡迎程度甚至超過了微軟官方的的LINQ to SQL及Entity Framework。作為NHibernate團隊的重要成員,NHibernate Profiler項目的創(chuàng)始人Ayende Rahien一直致力于將LINQ這種高效的開發(fā)方式與NHibernate強大的功能進行結(jié)合。他也在博客中公開了NHibernate Linq 1.0正式發(fā)布的消息:
過去幾年,社區(qū)中呼聲***的功能便是Linq支持了,這里我很興奮地宣布,NHiberante Linq 1.0已經(jīng)正式發(fā)布了。
NHiberante的Linq支持基于NHibernate Contrib中的Linq Provider,它已經(jīng)通過了一些現(xiàn)有項目的考驗。雖然我們還沒有確定何時將其合并至NHiberante中,但是項目團隊認為現(xiàn)在已經(jīng)可以給用戶提供產(chǎn)品環(huán)境質(zhì)量保證的Linq支持了。
這次的Linq覆蓋所有Criteria API的功能。由于Criteria API的功能有限,我們沒有提供對group join和子查詢的支持。不過NHibernate Linq在過去幾年中多次經(jīng)歷了產(chǎn)品環(huán)境的測試,大部分人認為可以滿足他們的需要。
值得注意的是,這并不是社區(qū)中唯一的NHibernate Linq Provider實現(xiàn)。Steve Strong也提供過一個名為LINQ to NHibernate的項目,您可以在NhAddins中獲得它的代碼。與前者不同的是,LINQ to NHibernate使用了類似于Java Hibernate中基于ANTLR的方法,而NHibernate Linq則將Linq表達式轉(zhuǎn)化為Criteria API。
兩套不同的Linq Provider實現(xiàn)也引起了一些評論。有人認為雙方應(yīng)該合作,提示用戶哪些功能會產(chǎn)生兼容問題,例如將一些API標記為過期,或者將它們轉(zhuǎn)移到其他命名空間下面。對此,Steve回答道:
我目前還沒有改變的打算。我經(jīng)常對(NHibernate Linq)項目的作者說,基于Criteria API的做法會限制它的功能。我打算實現(xiàn)一個基于AST的Linq Provider,不過這還處于計劃過程中。我們會追求一定程度上的兼容,但是我認為,如果要獲得一些優(yōu)勢的話,難免會出現(xiàn)破壞性的改變。
【編輯推薦】