為你解疑:ADO.NET對象服務
ADO.NET對象服務還是比較常用的,于是我研究了一下,在這里拿出來和大家分享一下,其實ADO.NET對象服務是實體框架 的一個組件,您可使用它來查詢、插入、更新和刪除數(shù)據(jù),它表示為作為實體類型實例的強類型 CLR 對象。
#T#ADO.NET對象服務支持針對實體數(shù)據(jù)模型 (EDM) 中定義的類型進行的語言集成查詢 (LINQ) 和 Entity SQL 查詢。對象服務將返回的數(shù)據(jù)具體化為對象,并將對象更改傳播回數(shù)據(jù)源。它還提供了跟蹤更改、將對象綁定到控件以及處理并發(fā)問題的功能。對象服務由 System.Data.Objects 和 System.Data.Objects.DataClasses 命名空間中的類來實現(xiàn)。
對象上下文
ObjectContext 類是以對象(這些對象是 EDM 中定義的實體類型的實例)的形式與數(shù)據(jù)進行交互的主要類。ObjectContext 類的實例封裝以下內(nèi)容:
◆到數(shù)據(jù)庫的連接,以 EntityConnection 對象的形式封裝。
◆描述模型的元數(shù)據(jù),以 MetadataWorkspace 對象的形式封裝。
◆在創(chuàng)建、更新和刪除操作過程中跟蹤對象的 ObjectStateManager 對象。
實體框架 工具使用概念架構(gòu)定義語言 (CSDL) 文件并生成對象層代碼。此代碼用于以對象形式使用實體數(shù)據(jù)以及利用對象服務功能。所生成的代碼包括以下數(shù)據(jù)類:
◆類型化 ObjectContext 類。此類表示模型的 EntityContainer,它派生自 ObjectContext。
◆表示實體類型并從 EntityObject 繼承的類。
◆表示復雜類型并從 ComplexObject 繼承的類。
ObjectContext 類不是線程安全的。在多線程方案中無法確保 ObjectContext 中的數(shù)據(jù)對象的完整性。ADO.NET對象服務支持對 實體框架 進行編程的以下行為:
1.以對象形式查詢數(shù)據(jù)
通過對象服務,您可以使用 LINQ、Entity SQL 或查詢生成器方法針對 實體數(shù)據(jù)模型 來執(zhí)行查詢并以對象的形式返回數(shù)據(jù)。有關(guān)更多信息,請參見對象查詢(實體框架)。
2.形成查詢結(jié)果
默認情況下,對象服務只返回查詢中專門請求的對象。當對象之間存在關(guān)系時,可以指定查詢是否返回相關(guān)對象。還可以在后續(xù)請求中加載相關(guān)對象。有關(guān)更多信息,請參見形成查詢結(jié)果(實體框架)。
3.使用生成器方法編寫查詢
對象服務在 ObjectQuery 上提供方法,用于構(gòu)造與 Entity SQL 和 LINQ to Entities 查詢等效的查詢。有關(guān)更多信息,請參見查詢生成器方法(實體框架)。
4.添加、更改和刪除對象
對象服務將數(shù)據(jù)對象保存在內(nèi)存中,您可以在對象上下文中添加、修改和刪除對象。對對象所做的更改是由對象上下文跟蹤的。有關(guān)更多信息,請參見添加、修改和刪除對象(實體框架)。
5.將更改保存到數(shù)據(jù)源
對象服務在對象上下文中緩存對對象的更改。當顯式請求時,對象服務將這些更改保存回數(shù)據(jù)源。有關(guān)更多信息,請參見保存更改和管理并發(fā)(實體框架)。
6.將對象綁定到控件
對象服務可以將對象綁定到支持數(shù)據(jù)綁定的控件,例如 DataGridView 控件。有關(guān)更多信息,請參見將對象綁定到控件(實體框架)。