上一篇文章介紹了.NET Entity Framework ,並演示了Model First模式,本文將繼續討論 Code First 模式的實現。 ...
上一篇文章介紹了.NET Entity Framework ,並演示了Model First模式,本文將繼續討論 Code First 模式的實現。
一、摘要
1、目標
本文驗證了通過Oracle Data Provider for .NET (ODP.NET)使用Entity Framework (EF) Code First。先創建.NET類,通過框架在資料庫中創建這些類對應的表;修改這些類,並通過Code First 將這些類的變化移植和映射到對應表中。
2、前言
Entity Framework 抽象關係型資料庫的邏輯架構並映射到.NET應用中,為開發者提供了對象關係映射能力。Code First 讓開發者開發的類轉化為資料庫的實體表。Code First Migrations 讓類的變化精準地映射到資料庫的對應表。
自從Oracle Data Access Components (ODAC) 12c Release 3 (12.1.0.2.1)這個版本開始,ODP.NET支持Code First 和 Code First Migrations 了,ODP.NET提供EF模型(Model)的資料庫存、取及更新能力。
本文將建立EF程式,生成"Employee" 和"Department" 類,並添加這些類的對象數據。程式運行時,會將類映射到資料庫表,並將對象存儲為表記錄行。然後為類添加新的屬性,而這些屬性會通過Code First Migrations添加到表的列信息。
3、環境條件
開始前,你應該滿足以下條件:
- Visual Studio 2013 以上,.Net Framework 4.5以上
- Oracle 11g Release 2以上
- 將這些文件下載到你的工作目錄(下載的文件為Programecs.txt)
- 請先閱讀“通過NuGet 安裝配置ODP.NET”,本文將告訴你如何安裝和配置 Entity Framework 6 以及 ODP.NET,並通過一個控制台程式來驗證相關使用。
- 如果你並不瞭解ODT是什麼,本條可略。Oracle Developer Tools(ODT)可以集成到Visual Studio環境中輔助Oracle開發,但這對Code First並不是必須的。本文能過 Server Explorer 瀏覽Oracle資料庫對象變化以驗證Code First 對資料庫的改變。如果你想用ODT的話請去Oracle官網上下載。
本文還將以Oracle 中自帶的"HR"為例,但註意數據表對象的命名要避免衝突。
二、Code First
本部分將建兩個類 "Employee" 、 "Department" ,並存儲相關數據。當程式運行時,EF Code First會創建這兩個類的對應表,併在生成類實例數據並保存時,會生成一個表的數據記錄。
1、打開上一往篇文章中建立的項目(點此進入),打開app.config。在<connectionStrings> 配置節下修改用戶名和密碼,以連接HR資料庫。註意鏈接的名字:OracleDbContext,我們會在後面的程式中用到這個名字
2、從下載的文件中copy出代碼片段,粘到項目的Program.cs中。這段代碼需要ODP.NET 和 EF 的相關配置,這些配置在前一篇文章中已配置好了。仔細閱讀代碼會發現,資料庫操作類OracleDbContext 名字與第1步所提到的 <connectionStrings> 配置節中的名字相同。程式使用 連接串信息連接資料庫,然後創建 Employee 和 Department 的實例,並生成數據。
如下圖,看下這兩個類在程式中如何定義的。每個類都包含有可被讀取和保存的欄位。其中一個欄位(Location)被註釋了,後續會去掉這個欄位的註釋。
如果你不想使用HR架構,你可以在代碼" modelBuilder.HasDefaultSchema("HR"); " 中,將HR替換成你想用的架構。
3、運行程式,將在資料庫中創建 "Employees" 和 "Departments" 表,並各添加一條數據。註意,這些表名是大小寫敏感的。
4、檢查一下資料庫中,這些表各數據是否正常添加。運行完程式後,在Server Explorer 中點開 HR.ORCL鏈接。此步操作需要安裝配置 ODT (Oracle Developer Tools for Visual Studio)
請輸入正確的密碼
展開表,檢查在類中定義的兩個表是否被創建
右鍵Departments和Employees ,查詢表數據,驗證數據與程式中插入的一致性。
三、Code First Migration
類會隨著業務需求和資料庫架構的變化而改變類定義,本部分會改變Employee類來模擬這種變化 。只需少量代碼,就能使類的變化同步到資料庫表。
在第二部分代碼中,第三個表_MigrationHistory同時被創建。這個表會跟蹤Code First 類的變化。
本步將演示在Employee類中添加欄位 Location ,並將它同步到資料庫表中。
1、依次打開 View > Other Windows > Package Manager Console. 這個視窗的功能是用來輸入Code First 的遷移命令,以同步.NET類和資料庫結構。
2、在視窗里輸入 Enable-Migrations 。這個命令是允許開啟 Code First Migrations 功能。
3、在Program.cs 中去掉註釋,模擬在Employee類中添加欄位的情形。
4、在PMC視窗輸入 Add-Migration First ,框架將會為數據模型Model 的變化 生成遷移代碼。
5、在視窗中鍵入 Update-Database ,變化將同步到資料庫
6、再看下資料庫表的變化 。在Server Explorer打開 Employees表
驗證下Location欄位是否被添加
四、總結
本文要點如下:
- 使用ODP.NET 創建 Code First 應用,將類及數據存儲到資料庫表中
- 使用 Code First Migrations 更新資料庫結構