移轉考量 (Entity Framework)
ADO.NET Entity Framework 可以為現有應用程式提供幾項優勢, 其中一項最重要的優勢,就是使用概念模型將應用程式所使用的資料結構從資料來源中的結構描述分隔。 這樣能方便您以後對儲存體模型或資料來源本身進行變更,而不必對應用程式進行補償變更。 如需使用 Entity Framework 有何優勢的詳細資訊,請參閱Entity Framework 概觀 和Entity Data Model。
若要善用 Entity Framework 的優勢,您可以將現有應用程式移轉至 Entity Framework 。 有些工作通用於所有移轉的應用程式。 這些一般工作包括將應用程式升級為使用以 Service Pack 1 (SP1) 3.5 版開頭的 .NET Framework、定義模型和對應,以及設定 Entity Framework。 在將應用程式移轉至 Entity Framework 的時候,有其他的適用考量。 這些考量取決於要移轉的應用程式類型以及應用程式的特定功能。 本主題所提供的資訊有助於您選擇在升級現有應用程式時要使用的最佳方式。
一般移轉考量
下列考量適用於將任何應用程式移轉至 Entity Framework 的情況:
任何使用以 3.5 版 SP1 開頭之 .NET Framework 的應用程式都可以移轉至 Entity Framework,只要應用程式使用之資料來源的資料提供者支援 Entity Framework 即可。
Entity Framework 可能無法支援資料來源提供者的所有功能,即使那個提供者支援 Entity Framework 也一樣。
針對大型或複雜應用程式,您不必一次將整個應用程式移轉至 Entity Framework, 但是資料來源變更時,還是要變更未使用 Entity Framework 的任何應用程式部分。
Entity Framework 所使用的資料提供者連接可以與應用程式的其他部分共用,因為 Entity Framework 會使用 ADO.NET 資料提供者存取資料來源。 例如,Entity Framework 是使用 SqlClient 提供者進行存取 SQL Server 資料庫。 如需詳細資訊,請參閱 Entity Framework 的 EntityClient 提供者。
通用移轉工作
移轉現有應用程式至 Entity Framework 的途徑取決於應用程式的類型以及現有資料存取策略。 不過,在將現有應用程式移轉至 Entity Framework 時,一律必須執行下列工作:
注意: |
---|
使用以 開頭的實體資料模型工具時,便會自動執行上述所有工作。 如需詳細資訊,請參閱 HOW TO:使用實體資料模型精靈 (Entity Framework)。 |
升級應用程式。
使用舊版 Visual Studio 和 .NET Framework 建立的專案必須升級為以 SP1 和 3.5 版 SP1 開頭的 .NET Framework。
定義模型與對應
模型和對應檔案定義概念模型中的實體、資料來源中的結構 (例如資料表、預存程序和檢視表),以及實體與資料來源結構間的對應。 如需詳細資訊,請參閱 HOW TO:手動定義模型和對應檔 (Entity Framework)。
儲存體模型中定義的類型必須與資料來源中物件的名稱相符。 如果現有應用程式將資料公開 (Expose) 為物件,您必須確保概念模型中定義的實體和屬性與這些現有資料類別和屬性的名稱相符。 如需詳細資訊,請參閱 HOW TO:自訂模型與對應檔以搭配自訂物件運作 (Entity Framework)。
注意: Entity Data Model Designer 可以用來重新命名概念模型中的實體,使其與現有物件相符。 如需詳細資訊,請參閱 ADO.NET Entity Data Model Designer。 定義連接字串 (Connection String)。
針對概念模型執行查詢時,Entity Framework 會使用特殊格式化的連接字串。 此連接字串會封裝與模型和對應檔以及資料來源連接有關的資訊。 如需詳細資訊,請參閱 HOW TO:定義連接字串 (Entity Framework)。
設定 Visual Studio 專案。
您必須將 Entity Framework 組件及模型和對應檔的參考加入至 Visual Studio 專案。 您可以將這些對應檔加入至專案,以確保它們與應用程式一起部署在連接字串中所指示的位置。 如需詳細資訊,請參閱 HOW TO:手動設定 Entity Framework 專案。
適用於具有現有物件的應用程式之考量
從 .NET Framework 4 版開始,Entity Framework 可支援「單純」(plain old) CLR 物件 (POCO),又稱為非持續性物件。 大部分的情況下,只要稍加變更您現有的物件,它們都能與 Entity Framework 搭配使用。 如需詳細資訊,請參閱使用 POCO 實體 (Entity Framework)。 您也可以將應用程式移轉至 Entity Framework ,並使用 Entity Framework 工具所產生的資料類別。 如需詳細資訊,請參閱 HOW TO:使用實體資料模型精靈 (Entity Framework)。
適用於使用 ADO.NET 提供者的應用程式之考量
ADO.NET 提供者 (如 SqlClient) 能讓您查詢資料來源,進而傳回表格式資料。 資料也可以載入至 ADO.NET 資料集。 下列清單說明適用於升級使用現有 ADO.NET 提供者的應用程式之考量:
- 使用資料讀取器 (Reader) 顯示表格式資料。
您可以考慮使用 EntityClient 提供者執行 Entity SQL 查詢,並且列舉整個傳回的 EntityDataReader 物件。 只有在應用程式使用資料讀取器顯示表格式資料,而且不需要 Entity Framework 提供的功能進行將資料具體化為物件、追蹤變更和處理更新時才這麼做。 您可以繼續使用對資料來源進行更新的現有資料存取程式碼,不過您可以使用從 EntityConnection 的 StoreConnection 屬性存取的現有連接。 如需詳細資訊,請參閱 Entity Framework 的 EntityClient 提供者。
使用資料集。
Entity Framework 提供的許多功能與資料集提供的相同,包括在記憶體中的持續性 (Persistence)、變更追蹤、資料繫結 (Data Binding),以及將物件序列化為 XML 資料。 如需詳細資訊,請參閱使用物件。如果 Entity Framework 並未提供應用程式所需的資料集功能,您還是可以使用 LINQ to DataSet 來善用 LINQ 查詢的優勢。 如需詳細資訊,請參閱 LINQ to DataSet。
適用於將資料繫結至控制項的應用程式之考量
.NET Framework 可讓您封裝資料集、ASP.NET 資料來源控制項等這類的資料來源中的資料,然後將使用者介面項目繫結至那些資料控制項。 下列清單說明適用於將控制項繫結至 Entity Framework 資料的考量。
將資料繫結至控制項。
當您查詢概念模型時,Entity Framework 會傳回資料做為實體類型執行個體的物件。 這些物件可以直接繫結至控制項,而且此繫結作業支援更新, 因此在呼叫 SaveChanges 方法時,會自動把對控制項中的資料 (如 DataGridView 中的資料列) 所做的變更儲存至資料庫。如果應用程式列舉查詢的結果,以在 DataGridView 或其他支援資料繫結的控制項類型中顯示資料,您則可以把應用程式修改為將控制項繫結至 ObjectQuery 的結果。
如需詳細資訊,請參閱將物件與控制項繫結 (Entity Framework)。
- ASP.NET 資料來源控制項。
Entity Framework 包含資料來源控制項,是專為簡化 ASP.NET Web 應用程式中的資料繫結所設計。 如需詳細資訊,請參閱 Entity Framework Data Source Control。
其他考量
下列考量可適用於將特定應用程式類型移轉至 Entity Framework 的情況。
- 公開資料服務的應用程式。
以 Windows Communication Foundation (WCF) 為架構的 Web 服務和應用程式使用 XML 要求/回應訊息格式公開來自基礎資料來源的資料。 Entity Framework 使用二進位、XML 或 WCF 資料合約序列化 (Serialization) 支援實體物件的序列化。 二進位和 WCF 序列化都支援物件圖形的完整序列化。 如需詳細資訊,請參閱 建置 N-Tier 應用程式。
使用 XML 資料的應用程式。
物件序列化能讓您建立 Entity Framework 資料服務。 這些服務為使用 XML 資料的應用程式提供資料,例如以 AJAX 為基礎的網際網路應用程式。 在這些情況下,請考慮使用 。 這些資料服務是以實體資料模型為基礎,並且使用標準具像狀態傳輸 (Representational State Transfer,REST) HTTP 動作 (如 GET、PUT 和 POST) 來提供實體資料的動態存取。 如需詳細資訊,請參閱 WCF Data Services。Entity Framework 不支援原生 XML 資料型別, 亦即將實體對應至具有 XML 資料行的資料表時,XML 資料行的對等實體屬性會是字串。 您可以中斷物件的連接,而且將其序列化為 XML。 如需詳細資訊,請參閱序列化物件 (Entity Framework)。
如果應用程式需要有查詢 XML 資料的功能,您還是可以使用 LINQ to XML 來善用 LINQ 查詢的優勢。 如需詳細資訊,請參閱 LINQ to XML。
- 維護狀態的應用程式。
ASP.NET Web 應用程式必須經常維護 Web 網頁或使用者工作階段 (Session) 的狀態。 ObjectContext 執行個體中的物件可存放於伺服器上的用戶端檢視狀態或工作階段檢視狀態內,以便之後擷取或重新附加至新的物件內容。 如需詳細資訊,請參閱附加及中斷連結物件。