淺析ADO.NET實(shí)體數(shù)據(jù)訪(fǎng)問(wèn)和更改
在向大家詳細(xì)介紹ADO.NET實(shí)體數(shù)據(jù)之前,首先讓大家了解下實(shí)體框架結(jié)構(gòu),然后全面介紹ADO.NET實(shí)體數(shù)據(jù)。實(shí)體框架不僅僅是另一種對(duì)象關(guān)系映射解決方案,還從根本上使應(yīng)用程序可以訪(fǎng)問(wèn)和更改表示為概念模型中的ADO.NET實(shí)體數(shù)據(jù)和關(guān)系數(shù)據(jù)。對(duì)象服務(wù)使用 EDM 將對(duì)概念模型中所表示的ADO.NET實(shí)體數(shù)據(jù)類(lèi)型的對(duì)象查詢(xún)轉(zhuǎn)換為特定于數(shù)據(jù)源的查詢(xún)。
查詢(xún)結(jié)果具體化為對(duì)象服務(wù)管理的對(duì)象。實(shí)體框架 提供以下方式用于查詢(xún) EDM 并返回對(duì)象:
◆LINQ to Entities -- 提供語(yǔ)言集成查詢(xún) (LINQ) 支持用于查詢(xún)?cè)诟拍钅P椭卸x的實(shí)體類(lèi)型。有關(guān)更多信息,請(qǐng)參見(jiàn) LINQ to Entities 概述。
◆Entity SQL -- 與存儲(chǔ)無(wú)關(guān)的 SQL 方言,直接使用概念模型中的實(shí)體并支持諸如繼承和關(guān)系等 EDM 功能。Entity SQL 可用于對(duì)象查詢(xún)和使用 EntityClient 提供程序執(zhí)行的查詢(xún)。有關(guān)更多信息,請(qǐng)參見(jiàn) Entity SQL 概述。
◆查詢(xún)生成器方法 -- 使您可以使用 LINQ 風(fēng)格的查詢(xún)方法構(gòu)造 Entity SQL 查詢(xún)。有關(guān)更多信息,請(qǐng)參見(jiàn)查詢(xún)生成器方法(實(shí)體框架)。
#T#實(shí)體框架中包含 EntityClient 數(shù)據(jù)提供程序。此提供程序管理連接,將實(shí)體查詢(xún)轉(zhuǎn)換為特定于數(shù)據(jù)源的查詢(xún),并返回一個(gè)由對(duì)象服務(wù)用來(lái)將實(shí)體數(shù)據(jù)具體化為對(duì)象的數(shù)據(jù)讀取器。當(dāng)不需要對(duì)象具體化時(shí),通過(guò)使應(yīng)用程序執(zhí)行 Entity SQL 查詢(xún)并使用返回的只讀數(shù)據(jù)讀取器,還可以像標(biāo)準(zhǔn) ADO.NET 數(shù)據(jù)提供程序一樣使用 EntityClient 提供程序。有關(guān)更多信息,請(qǐng)參見(jiàn) 用于實(shí)體框架EntityClient 提供程序。下圖演示用于訪(fǎng)問(wèn)數(shù)據(jù)的實(shí)體框架體系結(jié)構(gòu):
實(shí)體框架結(jié)構(gòu)圖
實(shí)體框架 生成一個(gè)從 ObjectContext 派生的類(lèi),該類(lèi)表示概念模型中的實(shí)體容器。此對(duì)象上下文提供跟蹤更改以及管理標(biāo)識(shí)、并發(fā)和關(guān)系的功能。此類(lèi)還公開(kāi)將插入、更新和刪除操作寫(xiě)入數(shù)據(jù)源的 SaveChanges 方法。與查詢(xún)類(lèi)似,這些更改是由系統(tǒng)自動(dòng)生成的命令或由開(kāi)發(fā)人員指定的存儲(chǔ)過(guò)程執(zhí)行的。有關(guān)更多信息,請(qǐng)參見(jiàn)添加、修改和刪除對(duì)象(實(shí)體框架)。