ADO.NET Entity Framework 基本概述
時(shí)間過(guò)得很快轉(zhuǎn)眼間VS已經(jīng)2010版了,在4月12日將會(huì)正式發(fā)布VS 2010
ADOEF 做為.Net 4.0 中被微軟推薦的ORM框架,相比.Net 3.5 sp1 已經(jīng)得到了進(jìn)一步的增強(qiáng),使用它我們可以針對(duì)我們的業(yè)務(wù)對(duì)象來(lái)編程和創(chuàng)建數(shù)據(jù)訪問(wèn),而不是原來(lái)的數(shù)據(jù)庫(kù)操作,極大的減少了代碼的編寫(xiě)和程序的維護(hù)開(kāi)支,使代碼更簡(jiǎn)潔美觀。
相比原始的開(kāi)發(fā)模型ADOEF擁有諸多的優(yōu)點(diǎn):
1.ADOEF模型中可以詳細(xì)的描述數(shù)據(jù)庫(kù)中的表關(guān)系,并映射到模型當(dāng)中來(lái)。
2.相比Linq to SQL ,ADOEF 可以支持更多的數(shù)據(jù)庫(kù),并提供了統(tǒng)一的模型。可以建立多個(gè)概念模型來(lái)映射同一個(gè)數(shù)據(jù)庫(kù)
3.可以方便靈活的更新ADOEF與數(shù)據(jù)庫(kù)的映射,應(yīng)對(duì)數(shù)據(jù)庫(kù)的變化
4.提供了更強(qiáng)大的語(yǔ)法檢查和驗(yàn)證模型。
實(shí)體框架Entity Framework 是 ADO.NET 中的一組支持開(kāi)發(fā)面向數(shù)據(jù)的軟件應(yīng)用程序的技術(shù)。在EF中的實(shí)體數(shù)據(jù)模型(EDM)它提供以下方式用于查詢(xún) EDM 并返回對(duì)象:
1. LINQ to Entities -- 提供語(yǔ)言集成查詢(xún) (LINQ) 支持用于查詢(xún)?cè)诟拍钅P椭卸x的實(shí)體類(lèi)型。
2. Entity SQL -- 與存儲(chǔ)無(wú)關(guān)的 SQL 方言,直接使用概念模型中的實(shí)體并支持諸如繼承和關(guān)系等 EDM 功能。
3. 查詢(xún)生成器方法 --可以使用 LINQ 風(fēng)格的查詢(xún)方法構(gòu)造 Entity SQL 查詢(xún)。
?
模型的建立可以參考:ADO.NET Entity Framework 一個(gè)簡(jiǎn)單數(shù)據(jù)綁定例子
?
語(yǔ)法說(shuō)明:
引用命名空間:
using System.Data.Objects; using NorthwindModel; //EF模型 首先我們查詢(xún)所有的Customer,代碼和Linq To SQL中的十分相似。 using (NorthwindEntities ctx = new NorthwindEntities()) //建立edm{foreach (var customer in ctx.Customers) //獲得實(shí)體集合{Console.WriteLine(customer.CustomerID);}}Entity SQL Language 查詢(xún)某個(gè)Customer,
Customer alfki = ctx.Customers.Where("it.CustomerID = 'ALFKI'").First();"it.CustomerID = 'ALFKI'"???? 表示查詢(xún)條件語(yǔ)句,該語(yǔ)句看著又像C#代碼又像SQL,被成為Entity SQL Language。
Linq To Entities,需要引用System.Linq命名空間。
? 方法1 Customer alfki = ctx.Customers.First<Customer>(it => it.CustomerID == "ALFKI"); ? 方法2 Customer alfki = (from c in ctx.Customerswhere c.CustomerID == "ALFKIA"select c).First(); ? 在Entity Framework中進(jìn)行一對(duì)多的查詢(xún)很簡(jiǎn)單,如果建立了數(shù)據(jù)庫(kù)關(guān)系,便可以直接使用。 但是值得注意的是Entity Framework默認(rèn)是Lazy Load,即關(guān)聯(lián)數(shù)據(jù)在需要的時(shí)候才加載。如果直接查詢(xún)?cè)揅ustomer關(guān)聯(lián)的orders,查詢(xún)不到結(jié)果。 ? Customer alfki = ctx.Customers.First<Customer>(it => it.CustomerID == "ALFKI"); //獲得客戶(hù) foreach (var order in alfki.Orders) //遍歷客戶(hù)的訂單{Console.WriteLine(order.OrderID);}需要在使用orders之前調(diào)用 alfki.Orders.Load(), 再次運(yùn)行便可以得到正確的結(jié)果。
?
參考文章:
http://msdn.microsoft.com/zh-cn/library/bb399572.aspx
http://www.cnblogs.com/blusehuang/archive/2007/10/10/920020.html
總結(jié)
以上是生活随笔為你收集整理的ADO.NET Entity Framework 基本概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OSPF协议工作原理
- 下一篇: ToExcel