老鳥歸納ADO.NET實體框架功能
ADO.NET實體框架經過長時間的發(fā)展,很多用戶都很了解ADO.NET實體框架了,這里我發(fā)表一下ADO.NET實體框架功能和大家討論討論。實體框架應用程序要求創(chuàng)建一個定義實體和關系的概念性模型、一個表示基礎關系模型的邏輯模型以及二者之間的映射。然后,從概念性模型生成可編程對象模型。
#T#ADO.NET實體框架功能和組件協(xié)同工作,可提供端到端的編程環(huán)境。實體數(shù)據(jù)模型 (EDM) 是 實體框架最重要的部分。它指定設計架構,架構用于生成由應用程序代碼使用的可編程類。用于保存數(shù)據(jù)的存儲結構由存儲架構表示,映射規(guī)范將設計架構與存儲架構連接起來。概念性實體可以具體化為對象,也可以使用數(shù)據(jù)讀取器以序列化格式讀取。開發(fā)人員可以根據(jù)需要擴展這些對象,以支持不同的應用程序需要。有關更多信息,請參見 實體數(shù)據(jù)模型。
通過Object Services組件,程序員可以使用從概念性模型生成的公共語言運行庫 (CLR) 類。它還為 ADO.NET實體框架功能提供基礎結構支持,包括提供各種服務,例如狀態(tài)管理、更改跟蹤、標識解析、加載和導航關系、將對象更改傳播到數(shù)據(jù)庫修改以及對 Entity SQL 的查詢支持。有關更多信息,請參見對象服務(實體框架)。LINQ to Entities 為查詢實體提供語言集成查詢 (LINQ) 支持。通過 LINQ to Entities,開發(fā)人員可以使用某種受支持的 .NET Framework 編程語言(例如 Visual Basic 或 Visual C#)編寫數(shù)據(jù)庫查詢。有關更多信息,請參見 LINQ to Entities。
Entity SQL 是類似于 SQL 的存儲無關語言,用來查詢和處理基于 Entity Data Model (EDM) 的對象的豐富對象圖。有關更多信息,請參見 Entity SQL 語言。EntityClient 提供程序通過根據(jù)概念性實體和關系訪問數(shù)據(jù)來擴展 ADO.NET 提供程序模型。它執(zhí)行使用 Entity SQL 的查詢。Entity SQL 提供使 EntityClient 能與數(shù)據(jù)庫進行通信的基礎查詢語言。有關更多信息,請參見 用于實體框架的 EntityClient 提供程序。
ADO.NET元數(shù)據(jù)組件針對 實體框架的設計時和運行時需求管理元數(shù)據(jù)。與模型和映射關聯(lián)的所有元數(shù)據(jù)都是通過獨立于元數(shù)據(jù)存儲所用機制的元數(shù)據(jù)接口公開的。當前的存儲機制使用的文件基于三種 XML 語言:概念性架構定義語言 (CSDL)、存儲架構定義語言 (SSDL) 和映射規(guī)范語言 (MSL)。有關更多信息,請參見 ADO.NET 元數(shù)據(jù)。實體框架包含一組不斷發(fā)展的工具,可生成在概念性模型中表示實體的映射和分部類。有關更多信息,請參見 實體數(shù)據(jù)模型工具。
實體框架包含一個支持規(guī)范命令目錄樹的最新 SqlClient 數(shù)據(jù)提供程序。有關更多信息,請參見 用于實體框架的 SQL Server .NET Framework 數(shù)據(jù)提供程序 (SqlClient)。
體系結構圖
下圖演示各用戶可訪問編程接口在 實體框架中的關聯(lián)方式。向下箭頭表示對數(shù)據(jù)源的查詢,向上箭頭表示返回的數(shù)據(jù)。對象服務生成規(guī)范命令目錄樹,該命令目錄樹表示對概念性模型執(zhí)行的 LINQ to Entities 或 Entity SQL 操作。EntityClient 提供程序基于 EDM 將此規(guī)范命令目錄樹轉換成一個作為對數(shù)據(jù)源的等效操作的新規(guī)范命令目錄樹。