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