Entity Framework 開發模式 - EDM ✕ POCO

Entity Framework(EF)透過資料模型與底層資料來源進行對映,提供O/RM(物件關聯對映)技術支援,在「透過 Entity Framework 從已存在的資料庫讀取資料」的相關討論中,無論POCO 或是 EDM ,我們看到了不同的Entity Framework 開發模式,就如同其中示範的,你可以選擇經由實體資料模型或是一般的類別進行物件關聯的對映實作。

第一版Entity Framework提供一組視覺化設計工具,開發人員只須指定所要對映的資料庫,便可以自動產生必要的實體資料模型檔案,在應用程式中完成物件關聯對應架構,實作最基礎的 O/RM 支援。接下來新版的 EF4 進一步支援模型優先(Model First)開發模式,在專案中透過設計工具預先建立實體資料模型檔案(EDM),再根據資料模型的定義,產生資料庫結構,而EF最初的開發模式則稱為Database First。

由於EF設計工具所建立的實體資料模型檔案(EDM)內容複雜且難以調整維護,與EF機制緊密結合不利於應用程式的擴充與發展,EF4同時導入另外一種程式碼優先(Code First)的開發模式,允許開發人員以自訂的傳統Class(Plain Old CLR Object-POCO)取代 EDM 進行關聯對映,Entity Framework 會根據定義好的Class產生所需的資料模型完成O/RM支援,同樣的,你可以指定所要對映的資料庫以產生相關的Class,或是預先完成Class的設計,再根據所建立的Class逆向產生所需的實體資料庫架構。




Code First 模式使用典型的傳統Class,不需定義的額外語意內容,與任何程式元件無關,你可以隨自己的需求設計類別運用Entity Framework 達到 O/RM的支援目的。

Visual Studio 2015 同時支援以上四種不同的開發模式,當你在專案中加入ADO.NET實體資料模型時如下:



在實體資料模型精靈的設定畫面中,可以看到其中列舉四種模式,瞭解相關的模式功能,只要根據自己的需求進行下一步設定即可。



Entity Framework 兩種建立資料模型的模式,其中透過視覺化設計工具EF Designer 是早期版本提供的方式,另外一種則是後續導入的 Code First 模式,完全透過程式碼的撰寫建立模型類別。無論EF Designer或是Code First ,你可以選擇針對某個現存的資料庫以建立對應的資料模型(模型優先),或是從無到有建立全新的資料模型,再經由模型產生對應的全新資料庫(資料庫優先) ,四種不同的開發模式都是不同的工作流程,列舉如下表:


EF Designer
Code First
全新資料庫
A
C
現存資料庫
B
D

A:模型優先(EF Designer)
利用設計師工具建立模型,再透過模型建立需要的資料庫。

B:資料庫優先(EF Designer)
透過逆向工具針對現存資料庫於設計工具中產生對應的模型。

C:模型優先(Code First)
撰寫程式碼建立模型類別,並據以產生資料庫,透過移轉工具維護資料庫。

D:資料庫優先(Code First)
直接透過逆向工具針對現存資料庫產生對應的模型類別。

無論採用何種模式,一旦資料庫與對應模型建立完成,接下來的資料存取操作則是一致的,因此根據需求採用合適的工作流程即可。

沒有留言: