新聞中心
本文向大家介紹LINQ ADO.NET,可能好多人還不了解LINQ ADO.NET,沒(méi)有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

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


咨詢
建站咨詢
