天天看點

EntityFramework小知識

Entity Framework 應用程式有以下優點:

1 應用程式可以通過更加以應用程式為中心的概念性模型(包括具有繼承性、複雜成員和關系的類型)來工作。

2 應用程式不再對特定的資料引擎或存儲架構具有寫死依賴性。

3 可以在不更改應用程式代碼的情況下更改概念性模型與特定于存儲的架構之間的映射。

4 開發人員可以使用可映射到各種存儲架構(可能在不同的資料庫管理系統中實作)的一緻的應用程式對象模型。

5 多個概念性模型可以映射到同一個存儲架構。

6 語言內建查詢支援可為查詢提供針對概念性模型的編譯時文法驗證。

Entity Framework中的實體資料模型(EDM)由三部分構成:

1概念架構定義語言檔案 (.csdl) -- 定義概念模型。

2存儲架構定義語言檔案 (.ssdl) --

定義存儲模型(又稱邏輯模型)。

3映射規範語言檔案 (.msl) --

定義存儲模型與概念模型之間的映射。

Entity Framework提供了一下方法用于查詢EDM并傳回對象

1LINQ to Entities -- 提供語言內建查詢 (LINQ) 支援用于查詢在概念模型中定義的實體類型。

2Entity SQL -- 與存儲無關的 SQL 方言,直接使用概念模型中的實體并支援諸如繼承和關系等 EDM 功能。

3查詢生成器方法 --可以使用 LINQ 風格的查詢方法構造 Entity SQL 查詢。

Entity Framework主要有四個類:ObjectContext、ObjectQuery、、

ObjectContext封裝 .NET Framework

和資料庫之間的連接配接。此類用作“建立”、“讀取”、“更新”和“删除”操作的網關。

ObjectContext 類為主類,用于與作為對象(這些對象為 EDM 中定義的實體類型的執行個體)的資料進行互動。

ObjectContext 類的執行個體封裝以下内容:

l          

到資料庫的連接配接,以 EntityConnection 對象的形式封裝。

描述該模型的中繼資料,以 MetadataWorkspace 對象的形式封裝。

用于管理緩存中持久儲存的對象的

對象。

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

AcceptAllChanges()

接受所有對該實體對象的更改

AddObject(string,object)

将實體對象添加到制定的實體容器中

ApplyPropertyChanges(string,object)

将以指派的實體對象屬性的更改應用到容器中對應的原對象。

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

将帶主鍵的實體對象附加到預設的容器中

Attach(string,object)

将實體對象附加到指定的實體容器中

CreateEntityKey(string,object)

給指定的實體對象建立實體主鍵或如果已存在實體主鍵,則直接傳回該實體的主鍵

CreateQuery<T>(string,params ObjectParameter[])

從給定的查詢字元串建立ObjectQuery對象。

DeleteObject(object)

删除指定的實體對象

Detach(object)

移除指定的實體對象

ExecuteFunction<TElement>(string,params ObjectParameter[])

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

GetObjectByKey(System.Data.EntityKey key)

通過主鍵KEY從

中檢索對象(如果存在);否則從存儲區中檢索。

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

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

Refresh(System.Data.Objects.RefreshMode refreshMode,

System.Collections.IEnumerable collection)

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

SaveChanges(bool)

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

SaveChanges()

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

TryGetObjectByKey(System.Data.EntityKey,out object)

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

ObjectQuery有個有用的方法ToTraceString(),這個方法用于追蹤所執行的SQL語句,通過此方法我們可以擷取所執行的SQL語句,以便我們檢視、分析具體執行的SQL語句。

維護實體執行個體或關系執行個體的狀态(已添加、已删除、已分離、已修改或未更改)、鍵值和原始值。還管理已修改屬性的清單。其包含一下方法:

AcceptChanges

接受目前值作為原始值,并将實體标記為 Unchanged()。

 Delete

将實體标記為 Deleted()。如果實體處于 Added()()() 狀态,它将為 Detached()。

GetModifiedProperties

傳回标記為 Modified()的屬性名稱。

 SetModified

将狀态設定為 Modified()。

 SetModifiedProperty

将指定的屬性标記為 Modified()。

用于維護對象映射、對象狀态/辨別管理以及實體執行個體或關系執行個體的持久性。

擷取給定EntityState的集合。

擷取給定的 EntityKey 對應的