探索豐富多彩的ADO.NET Entity Framework的工具
前一段時(shí)間園子里有很多文章介紹分析了Linq To SQL,它可以說是一個(gè)簡(jiǎn)單實(shí)現(xiàn)的ORM,是微軟針對(duì)數(shù)據(jù)和對(duì)象的阻抗不平衡的問題。C# 3.0推出一些新的特性,比如Extension Method, Lambda Expression, ADO.NET Entity Framework。
其實(shí)這些新特性都是用來為L(zhǎng)inq服務(wù)。Linq To SQL將程序員從以往寫大量的sql查詢語(yǔ)句、取值、賦值中解放出來,在intellisense和編譯上做了很多工作,使得這些查詢能夠在編譯期進(jìn)行檢查。同時(shí)微軟推出ADO.NET Entity Framework,即下一代的ADO.NET。它是比Linq To SQL更加強(qiáng)大的ORM,讓開發(fā)人員只需要著眼于領(lǐng)域?qū)ο竽P偷拈_發(fā),而不需要考慮它們是如何與關(guān)系數(shù)據(jù)庫(kù)交互。
本文由一個(gè)簡(jiǎn)單的例子進(jìn)行介紹Entity Framework是如何使用的。在此之前,必須下載ADO.NET Entity Framework runtime 和tools,官方也提供了很多示例下載。下面正式開始ADO.NET Entity Framework之旅(開發(fā)工具VS 2008 beta,以Northiwind數(shù)據(jù)庫(kù)為例)。
首先建立一個(gè)Console project(要選擇.NET Framework 3.5),然后點(diǎn)擊Add New Item,看見ADO.NET Entity Data Model選項(xiàng):
然后會(huì)出現(xiàn)ADO.NET Entity Framework,選擇數(shù)據(jù)庫(kù),選擇表、視圖、存儲(chǔ)過程等,按照向?qū)б徊讲絹砭涂梢粤?,在這里只選擇Customers和Orders表。在Solution Explore視圖里面點(diǎn)擊Northwind.edmx,可以看到Entity的信息(看上去很像Linq To SQL的dbml設(shè)計(jì)視圖),然后將它們改名為Customer和Order。
在實(shí)體框架中,我們可以通過ADO.NET Entity Framework進(jìn)行查詢,它的使用方法就像ADO.NET中的SqlCommand。不同的是SqlCommand使用標(biāo)準(zhǔn)SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,而EntityCommand使用Entity SQL對(duì)EntityContainer進(jìn)行查詢,當(dāng)然最終實(shí)體框架會(huì)將Entity SQL轉(zhuǎn)換成標(biāo)準(zhǔn)SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)。