LINQ ADO.NET淺析
本文向大家介紹LINQ ADO.NET,可能好多人還不了解LINQ ADO.NET,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
為什么需要LINQ ADO.NET?
面向?qū)ο蟮木幊陶Z言已經(jīng)成為企業(yè)應(yīng)用開發(fā)的重要工具,LINQ ADO.NET對關(guān)系數(shù)據(jù)提供了一種方便的接口,但還不是一種面向?qū)ο蟮姆椒?。例如,下面的偽代碼:
- User u = new User(); //代表user表的一個User類
- u.LoginName = "net_lover" //設(shè)置一個LoginName標(biāo)識
- u.Load(); .//加載用戶信息
- u.Title = "【CSDN】"; //將Title修改為【CSDN】
- u.Update(); //將修改的數(shù)據(jù)更新到數(shù)據(jù)庫。
這段偽代碼說明了管理數(shù)據(jù)的一種面向?qū)ο蟮姆椒?,對開發(fā)人員來說,看不到查詢或SQL語句。你只需關(guān)心的只是做什么,而無需關(guān)心怎么做。這種將面向?qū)ο蠛完P(guān)系數(shù)據(jù)結(jié)合在一起的方法叫做對象關(guān)系映射(ORM)模型,這樣的方法簡化了枯燥的數(shù)據(jù)操作,簡潔明了。
關(guān)于ORM,在Java世界里有很多框架,但在.NET Framework里還比較少,NHibernate就是Microsoft .NET平臺下ORM的實現(xiàn),它的目的是將開發(fā)人員從大量的關(guān)系數(shù)據(jù)持久化相關(guān)的編程中解放出來。目前,NHibernate的穩(wěn)定版本是 NHibernate 1.2.1,于2007年11月份發(fā)布,加入了Hibernate 3中的更多功能,并且支持 .NET 2.0,存儲過程,泛型和可為空類型。NHibernate 2.0目前正在開發(fā)中。畢竟NHibernate屬于開源的代碼,不是微軟自己的東西,而且它處理的數(shù)據(jù)源也有限。VS 2005中NHibernate的插件下載地址:http://sourceforge.net/projects/nhibernateaddin。
盡管微軟在Dynamics 3.0應(yīng)用服務(wù)器中嵌入了ORM功能,并且在LINQ ADO.NET 3.0中將廣泛支持此功能,但是還仍然沒有將這種編程模型提供給.NET開發(fā)人員。LINQ ADO.NET中數(shù)據(jù)的操作采用的是Command或者 DataAdapter對象來操作關(guān)系數(shù)據(jù)庫,但需要自己寫的代碼很多,并且需要自己寫SQL語句。
.NET也提供了處理XML和非關(guān)系數(shù)據(jù)源,但是我們必須了解其他的方法來查詢信息,比如XPath或者XQuery。
現(xiàn)在,可以編程管理的數(shù)據(jù)可能來自不同的數(shù)據(jù)域,如數(shù)組、對象關(guān)系圖、XML文檔、數(shù)據(jù)庫、文本文件、注冊表、電子郵件消息、簡單對象訪問協(xié)議(SOAP)信息內(nèi)容、Microsoft Office Excel文件等等很多。每種數(shù)據(jù)域都有自己特定的訪問模型,例如,當(dāng)查詢數(shù)據(jù)庫時,通常使用SQL,當(dāng)遍歷XML數(shù)據(jù)時,使用Document Object Model(DOM)或者XPath、XQuery,當(dāng)遇到數(shù)組是采用遍歷的方法,對于對象關(guān)系圖,則需要自己創(chuàng)建算法,對于Excel文件,電子郵件消息或者M(jìn)icrosoft Windows注冊表,要訪問他們,則需要使用特定的應(yīng)用程序編程接口(API)。到最后,訪問不同的數(shù)據(jù)源就要使用不同的編程模型。
將多種數(shù)據(jù)訪問技術(shù)統(tǒng)一到一個全面的模型也曾出現(xiàn)過,例如:開放數(shù)據(jù)庫互聯(lián)(ODBC)提供者允許開發(fā)人員以一種類似SQL的語言通過關(guān)系模型訪問數(shù)據(jù)。在某些時候,數(shù)據(jù)以層次或者圖形模型來表示更加符合數(shù)據(jù)的本質(zhì)含義。另外,如果數(shù)據(jù)模型沒有與編程語言結(jié)合在一起,就可能需要編程人員自己管理不同的類型體系。所有這些差別在數(shù)據(jù)和代碼之間產(chǎn)生一種“阻抗失諧”。LINQ就是解決這些問題的技術(shù),它提供統(tǒng)一的訪問和管理數(shù)據(jù)的方法,并且不是采取“一刀切” 的模型來實現(xiàn)。LINQ在這些數(shù)據(jù)模型之間均衡操作直接的共同特性,而不是在他們之間將不同的結(jié)構(gòu)變成統(tǒng)一。
【編輯推薦】


2012-05-10 11:25:34
2011-05-20 11:31:07




