標籤:work http oracle zip nuget 實體 目標 efi get
上一篇文章介紹了.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" 類,並添加這些類的對象資料。程式運行時,會將類映射到資料庫表,並將Object Storage Service為表記錄行。然後為類添加新的屬性,而這些屬性會通過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 更新資料庫結構
.NET Entity Framework (with Oracle ODP.NET) -Code First