處理實體資料
實體架構 會將一組概念結構描述和儲存結構描述,以及它們之間的對應編譯成 實體 SQL 陳述式的雙向組合,稱為*「用戶端檢視」*。這些檢視會驅動查詢及更新執行階段引擎中的處理。在設計階段或執行階段針對 實體資料模型 (EDM) 結構描述執行第一個查詢時,都可以叫用產生這些檢視的對應編譯器。
實體架構 會提供 EntityConnection 給基礎資料提供者和關聯式資料庫,利用這種方式建置於儲存體專用 ADO.NET 資料提供者之上。
執行查詢時,會先剖析查詢然後將它轉換成標準命令樹,也就是此查詢的物件模型表示方式。標準命令樹可表示選取、更新、插入和刪除命令。所有後續處理都是在命令樹上執行,這是 System.Data.EntityClient 提供者與基礎 .NET Framework 資料提供者 (例如 System.Data.SqlClient) 之間的通訊方式。
下圖說明用於處理資料的 Entity Framework 架構:
查詢物件
實體架構 工具會產生從代表概念模型中所定義實體容器的 ObjectContext 衍生的類別。ObjectContext 類別支援針對會將實體傳回為物件之 EDM 的查詢,也支援建立、更新和刪除實體物件。實體架構 支援針對 EDM 的物件查詢。這些查詢可以使用 實體 SQL、Language-Integrated Query (LINQ) 和物件查詢產生器方法來撰寫。
在概念模型中,實體是利用關聯來彼此聯結。在物件層中,這些情況是以依據實體參考公開相關物件集合的屬性表示。例如,在 School 模型中,Department.Course 會依據 Course 與 Department 之間的關聯取得 Course 物件的實體集合。由於所參考的物件並不會自動載入,所以您必須呼叫實體參考上的 Load 方法將相關物件資料載入物件內容中。您也可以指定可定義哪些相關物件要與傳回物件一同載入的查詢路徑。如需詳細資訊,請參閱以物件形式查詢資料 (Entity Framework)。
以下快速入門的範例示範會在執行時擷取所有 Department 物件的查詢。查詢路徑定義可確保與 Department 關聯的 Course 物件也會傳回實體 SQL WHERE 子句會依 Name 排序傳回的物件。
' Define a query that returns all Department objects and related
' Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
schoolContext.Department.Include("Course").OrderBy("it.Name")
// Define a query that returns all Department objects and related
// Course objects, ordered by name.
ObjectQuery<Department> departmentQuery =
schoolContext.Department.Include("Course").OrderBy("it.Name");
如需詳細資訊,請參閱以物件形式查詢資料 (Entity Framework)。
您可以定義使用預存程序的 EDM 以便在資料來源執行查詢。來自這些預存程序的結果集會對應到概念模型中的實體。如需詳細資訊,請參閱預存程序支援 (Entity Framework)。
處理物件
物件內容中的物件是資料來源中資料的實體類型表示方式。您可以修改、建立及刪除物件內容中的物件。物件內容可管理物件之間的實體和關聯性。您也可以將物件序列化以及將物件繫結到控制項。如需詳細資訊,請參閱使用物件 (Entity Framework)。
以下快速入門的範例會取得與 Department 物件關聯的 Course 物件集合,並將此集合繫結到 DataGridView 控制項。
' Get the object for the selected department.
Dim department As Department = _
CType(Me.departmentList.SelectedItem, Department)
' Bind the grid view to the collection of Course objects
' that are related to the selected Department object.
courseGridView.DataSource = department.Course
// Get the object for the selected department.
Department department =
(Department)this.departmentList.SelectedItem;
// Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Course;
Entity Framework 會追蹤實體資料的變更,並且可以讓您將變更存回資料來源。在以下快速入門的範例中,物件內容中的變更會寫入到資料庫。
' Save object changes to the database, display a message,
' and refresh the form.
numChanges = schoolContext.SaveChanges()
// Save object changes to the database, display a message,
// and refresh the form.
numChanges = schoolContext.SaveChanges();
如需詳細資訊,請參閱加入、修改和刪除物件 (Entity Framework)。
您可以定義使用預存程序的 EDM 以便在資料來源插入、更新和刪除資料。這些預存程序會對應到概念模型中的實體。如需詳細資訊,請參閱預存程序支援 (Entity Framework)。
另請參閱
概念
LINQ to Entities 範例
Entity Data Model 類型
Entity Data Model 關聯性