序列化自我追蹤實體
在 ADO.NET Entity Framework 應用程式中,物件內容負責追蹤物件中的變更。 不過,當您必須在無法使用物件內容的另一層中操作物件時,則必須決定如何追蹤變更及將這些變更回報物件內容。 從 Entity Framework 4 版開始,自我追蹤實體可協助您追蹤任何層中的變更。 自我追蹤實體是根據「文字範本轉換工具組」(Text Template Transformation Toolkit,T4) 範本建置而成的實體,該範本產生的實體類型能夠記錄純量、複雜和導覽屬性的變更。 Visual Studio 2010 中提供 ADO.NET 自我追蹤實體產生器範本。 如需詳細資訊,請參閱逐步解說:序列化自我追蹤實體。
此範例可以在 MSDN Code Gallery 的 Entity Framework 文件範例 (英文) 網站上取得。
案例
範例會示範 WCF 服務如何公開一系列傳回實體圖形的作業。 接著,用戶端應用程式會操作該圖形並提交修改至服務作業,以便使用 Entity Framework 來驗證更新並將更新儲存至資料庫。
必要條件
在執行此範例之前,請確定已安裝下列軟體:
包含 .NET Framework 4 的 Visual Studio 2010
SQL Server 2005 或 2008 Database Engine
School 範例資料庫 (包含在範例中)
SQL Server Management Studio (選擇性)
建置範例
STESchoolModelExample 由 5 個專案所組成:
包含 School 架構模型及自我追蹤實體範本的 STESchoolModel 類別庫專案,包含自我追蹤實體類型範本及具型別 System.Data.Objects.ObjectContext 範本。
STESchoolModelTypes 類別庫專案,連結至位於 STESchoolModel 專案中的自我追蹤實體範本。
STESchoolModelService Windows Communication Foundation (WCF) 服務應用程式,公開一組可傳回實體圖形及將用戶端上所做變更套用至資料庫的作業。
STESchoolModelConsoleTest 主控台用戶端應用程式。
STESchoolModelWPFTest Windows Presentation Foundation (WPF) 用戶端應用程式。
請使用下列程序來建置範例。
若要建置 STESchoolModelExample 應用程式
(選擇性) 如果 School 範例資料庫尚未出現在 SQL Server 執行個體中,請執行隨附於專案的 CreateSchool.sql 指令碼。
在 Visual Studio 中開啟方案檔。
(選擇性) 如果您在本機電腦上預設執行個體以外的 SQL Server 執行個體中建立了 School 資料庫,請指定正確的 SQL Server 執行個體,方法是修改下列專案之組態檔中連接字串的資料來源:STESchoolModelService、STESchoolModelConsoleTest、STESchoolModelWPFTest。
建置方案。
執行範例
使用下列程序執行範例。
若要執行用戶端應用程式
更新 STESchoolModelWPFTest 及 STESchoolModelConsoleTest 用戶端專案中的服務參考。 若要更新參考,在 [方案總管] 以滑鼠右鍵按一下 [服務參考] 資料夾下的 ServiceReference1,並且選取 [更新服務參考]。
將 STESchoolModelWPFTest 或 STESchoolModelConsoleTest 設定為啟始專案。
執行應用程式。 如果用戶端無法與參考的服務進行通訊,請依照下列步驟執行。
從用戶端專案刪除 ServiceReference1。
再次新增服務參考。 若要將參考新增至服務,在 [方案總管] 中以滑鼠右鍵按一下 [服務參考] 資料夾,然後選取 [加入服務參考]。
設定服務。 因為 STESchoolModelService 會傳回 System.Collections.Generic.List,您必須設定服務參考。 以滑鼠右鍵按一下服務名稱 (ServiceReference1),然後選取 [設定服務參考...]。 在 [設定服務參考] 對話方塊的 [集合型別] 清單中,選取 [System.Collections.Generic.List] 型別。
執行應用程式。
移除範例
使用下列程序移除 STESchoolModelExample 範例。
若要移除 STESchoolModelExample 應用程式
刪除專案目錄及內容。
(選擇性) 從 SQL Server 的執行個體卸除 School 資料庫。
另請參閱
其他資源
ADO.NET Entity Framework
實體資料模型
ADO.NET 實體資料模型工具
將物件與控制項繫結
逐步解說:序列化自我追蹤實體