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