Entity Framework 學習初級篇2--ObjectContext類的介紹

iDotNetSpace發表於2009-05-13
 本節,簡單的介紹EF中的ObjectContextObjectQueryObjectStateEntryObjectStateManager這個幾個比較重要的類,它們都位於System.Data.Entity.dll下的System.Data.Objects名稱空間下。在後續的章節中,我們經常會用到它們的某些方法,以便完成我們的某些操作或目的。本節,簡單的說明一下以後我們可能會用到的各個類的方法,以方便我們後續的學習。

ObjectContext封裝 .NET Framework 和資料庫之間的連線。此類用作建立讀取更新刪除操作的閘道器。

ObjectContext 類為主類,用於與作為物件(這些物件為 EDM 中定義的實體型別的例項)的資料進行互動。

ObjectContext 類的例項封裝以下內容:

l           到資料庫的連線,以 EntityConnection 物件的形式封裝。

l           描述該模型的後設資料,以 MetadataWorkspace 物件的形式封裝。

l           用於管理快取中持久儲存的物件的 ObjectStateManager 物件。

ObjectContext類的成員方法以說明如下所示:

l           AcceptAllChanges()

接受所有對該實體物件的更改

l           AddObject(string,object)

將實體物件新增到制定的實體容器中

l           ApplyPropertyChanges(string,object)

將以指派的實體物件屬性的更改應用到容器中對應的原物件。

l           Attach(System.Data.Objects.DataClasses.IEntityWithKey entity)

將帶主鍵的實體物件附加到預設的容器中

l           Attach(string,object)

將實體物件附加到指定的實體容器中

l           CreateEntityKey(string,object)

給指定的實體物件建立實體主鍵或如果已存在實體主鍵,則直接返回該實體的主鍵

l           CreateQuery(string,params ObjectParameter[])

從給定的查詢字串建立ObjectQuery物件。

l           DeleteObject(object)

刪除指定的實體物件

l           Detach(object)

移除指定的實體物件

l           ExecuteFunction(string,params ObjectParameter[])

對預設容器執行給定的函式。

l           GetObjectByKey(System.Data.EntityKey key)

通過主鍵KEYObjectStateManager 中檢索物件(如果存在);否則從儲存區中檢索。

l           Refresh(System.Data.Objects.RefreshMode refreshMode, object entity)

按指定持久更新模式,使用指定實體的儲存區資料更新ObjectStateManager。。

l           Refresh(System.Data.Objects.RefreshMode refreshMode, System.Collections.IEnumerable collection)

按指定持久處理模式,使用指定實體集的儲存區資料更新ObjectStateManager

l           SaveChanges(bool)

將所有更新持久儲存到儲存區中。引數是客戶端事務支援所需的引數。引數為true則在更新後自動將更改應用到ObjectStateManager中的實體。如果為false,則在更新後還需要呼叫AcceptAllChanges()以便更新ObjectStateManager中的實體。

l           SaveChanges()

將所有更新持久儲存到儲存區中

l           TryGetObjectByKey(System.Data.EntityKey,out object)

嘗試從指定實體主鍵返回該實體

以上各個方法的具體用法,將在後面介紹。

接著,再看看有用的類ObjectQuery

ObjectQuery有個有用的方法ToTraceString(),這個方法用於追蹤所執行的SQL語句,通過此方法我們可以獲取所執行的SQL語句,以便我們檢視、分析具體執行的SQL語句。(類似Nhibernate配置檔案中的showsql節)

再瞭解一下ObjectStateEntry

ObjectStateEntry維護實體例項或關係例項的狀態(已新增、已刪除、已分離、已修改或未更改)、鍵值和原始值。還管理已修改屬性的列表。其包含一下方法:

l           AcceptChanges

接受當前值作為原始值,並將實體標記為 Unchanged()

l            Delete

將實體標記為 Deleted()。如果實體處於 Added()()() 狀態,它將為 Detached()

l           GetModifiedProperties

返回標記為 Modified()的屬性名稱。

l            SetModified

將狀態設定為 Modified()

l            SetModifiedProperty

將指定的屬性標記為 Modified()

接著,再看看ObjectStateManager

ObjectStateManager用於維護物件對映、物件狀態/標識管理以及實體例項或關係例項的永續性。

l           GetObjectStateEntries

獲取給定EntityStateObjectStateEntry集合。

l           GetObjectStateEntry

獲取給定的 EntityKey 對應的 ObjectStateEntry

現在,幾個重要的類簡單介紹完畢。後面,我們將具體學習它們的使用。

原文地址:http://www.cnblogs.com/xray2005/archive/2009/05/07/1452274.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-594963/,如需轉載,請註明出處,否則將追究法律責任。

相關文章