Entity Framwork(實體框架,簡稱EF)是ORM(Object Relational Mapping,對象映射關系)的一個解決方案。
EF允許項目將數據庫的表映射為實體,並封裝了操作方法,方便開發人員直接操作數據庫。
EF有三種開發模式,分別是:
Database First(數據庫先行): 將已存在的數據庫中的表映射為實體;
Code First(代碼先行):先編寫代碼,再通過EF反向生成數據庫的表;
Model First(模型先行):通過一個可視化模型,分別生成數據庫和代碼。
這里示例為Database First模式。
必備工具:Visual Studio 2013(.Net框架從3.5支持EF,因此VS版本應支持3.5以上的.Net框架。我使用的是13,實際上10也可以);
ODT開發工具(如果沒有Oracle客戶端必須要安裝。示例數據庫為11g,原本使用11g的ODT就可以了。但由於我使用的是Visual Studio 2013,ODT 11g沒有支持Visual Studio 2013。后來我機智地想到用12C的ODT,安裝時發現其支持Visual Studio 2013,而且兼容11g,問題迎刃而解)。地址:http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
搭建開發:
1. 新建一個WinForm項目,然后添加->新建項->ADO.NET 實體數據模型;
如果沒有看到此選項,不要慌,看看項目的目標框架是不是3.5以上
2. 選擇從數據庫生成
3. 新建連接,如果數據源不是Oracle,點更改,選擇Oracle。
4. 填寫用戶名和密碼,可選擇TNS和EZ連接兩種方式。這里選用TNS,注意TNS文件的連接字符串應該准備好。
5.左下角可測試連接。連接成功后,如果有如下提示
檢查【服務器資源管理器】里是否有同名的連接。如果有,使用已有即可無需新建連接,或者將舊的刪除重新創建(改名也不行,不知是否有其他方法).
6.為安全起見,連接字符串中不要包含密碼等敏感信息。在應用程序中,可將敏感信息加密寫在配置文件,在使用時再加密。這樣用戶看得到配置文件,但無法得知敏感信息。
7. 選擇要用到的表,視圖和存儲過程。完成后如下
8. 可以看到表已映射為實體。由於這幾個表之間沒有建立外鍵,而它們是關聯的,所以可以為它們添加關聯。注意,在項目中添加關聯,並不會在數據庫中新建外鍵,只是方便在項目中使用。
右鍵->新增->關聯。注意不要創建外鍵,這樣會產生新的屬性。關聯的鍵可以在創建關聯后設置。
9. 由於沒有添加外鍵屬性,需要指定關聯的鍵。雙擊關聯,可設置。
10. 最終話
明天將繼續簡單演示代碼操作