Entity Framework的全稱是ADO.NET Entity Framework,是微軟開發的基於ADO.NET的ORM(Object/Relational Mapping)架構。
Entity Framework的主要特點:
1. 支援多種資料庫(Microsoft SQL Server, Oracle, and DB2);
2. 強勁的映射引擎,能很好地支援預存程序;
3. 提供Visual Studio整合工具,進行可視化操作;
4. 能夠與ASP.NET, WPF, WCF, WCF Data Services進行很好的整合。
更多簡介,請看:ADO.NET Entity Framework At-a-Glance
在部落格園新版短訊息功能開發中,我們準備用Entity Framework 4,我們首先面臨這樣的問題:
實體類與資料庫都已經存在,而且實體類的類名與資料庫中的表名,類的屬性與表中對應的欄位名稱不同。也就是說我們不能使用通常的方法在VS2010中通過ADO.NET Entity Data Model(.edmx檔案)產生實體類與ObjectContext。
註:這個實體類有個稱呼叫POCO(Plain Old CLR Objects)。
我們解決方案是:在.edmx檔案中手動設定映射關係。
下面是操作步驟:
1. 使用ADO.NET Entity Data Model,在VS2010建立一個.edmx檔案,如:
2. 根據Entity Data Model Wizard進行操作,在選擇資料庫表的視窗中,注意在Model Namespace輸入框中輸入現有實體類的命名空間,如:
3. 點擊Finish,產生相應的EntityType,如:
這裡的EntityType是根據資料庫中的表結構產生的,與實際的實體類是不一樣的,表名與類名不一樣,表的很多欄位與類的屬性不一樣。
下面我們配置映射的關鍵地方:
4. 點擊.edmx視窗點擊空白處,在屬性視窗中將Code Generation Strategy的屬性設定為None(見),也就是不讓VS2010自動產生實體類和對應的ObjectContext。
5. 繼續在.edmx視窗,選擇實體類,點擊右鍵選擇Show in Model Browser,見:
6. 進入Model Browser視窗,見:
中,上面是實體類(這裡是VS2010自動產生的,與資料庫表是一一對應的),下面是表結構。
修改映射就是在這裡:在Entity Types中將類名改為實際的實體類名,將屬性改為實際的屬性,如:
修改之後,映射就配置好了,.edmx檔案中實體類圖中也隨之自動更改,見:
7. .edmx檔案實際就是一個xml檔案,映射資訊就存放在其中。在VS2010解決方案管理器中選擇這個檔案,右鍵Open With,選擇用XML Editor開啟,就可以看到.edmx檔案的內容,如:
8. 再寫個繼承自ObjectContext的類(見),工作就完成了。