Oracle installation and using Entity Framework 6 connect to oracle database with ASP.NET MVC

 

一、安裝 VS2017 Community

在 Windows 10 professional 安裝 VS2017 Community。

安裝完後請重新開機,避免之後在安裝 Oracle 時會遇到奇奇怪怪的問題。

 

二、安裝 Oracle 18c (18.3)

1、Oracle 18c 建議劃個 10GB 的記憶體給他,以滿足他的安裝需求,

而 Oracle XE 版本官方建議至少 2GB。

2、當下載好 Oracle 18c (18.3) 時,其檔名為 WINDOWS.X64_180000_db_home.zip,

我是將之解壓縮到名為 WINDOWS.X64_180000_db_home 資料夾,

注意 WINDOWS.X64_180000_db_home 資料夾安裝完後也要保留,

後續 Oracle 都會再使用他。

 

3、開始安裝 oracle

這裡的「起始資料庫」的意思比較像是 MSSQL 的 instance。

先在 C 槽新增一個名為 Oracle18c 的資料夾,該資料夾為 Oracle 基本目錄。

全域資料庫名稱相當等同於 MSSQL 的 instance 名稱。

其密碼就是設定 SYSTEM 帳號的密碼,相當等同於 MSSQL 的 sa 帳號。

我密碼組合為英文加數字,但 oracle 還是讓我過了

安裝完後請重新開機,避免之後在安裝 Oracle 時會遇到奇奇怪怪的問題。

 

三、安裝 ODAC (Oracle Data Access Components)

請至 Oracle Data Access Components - .NET Downloads 頁面下載,

這些 Oracle Developer Tools for Visual Studio (ODT) 中,

我已試過 ODAC for Visual Studio 2017 檔,但我安裝失敗,裝不起來,

可能要注意有些 ODAC 安裝條件是 Visual studio professonal 版本以上吧?

 

後來是選 「ODAC - Oracle Universal Installer (OUI) ODAC 18.3 - 561,909,827 bytes - November 23, 2018」來安裝。

建立連線別名可建或可不建,建的好處當然是之後需要連線到資料庫的時候,

不須一再重覆輸入下面四個欄位,可節省時間,

  • 連線別名 (data source alias)
  • 連接埠號碼 (port)
  • 資料庫主機名稱 (hostname or IP)
  • 資料庫服務名稱 (database service name)

 

 

四、在專案中使用 NuGet 安裝 Oracle.ManagedDataAccess.EntityFramework 套件

 

五、準備測試資料表

先利用 SYSTEM 帳號創立另一 user 帳號

填好上述欄位並測試成功後再正式連線。

特別說明:上圖的 SID 欄位通常等於服務名稱欄位,而服務名稱欄位就是等於資料庫服務名稱 (database service name)

 

 

於「使用者」頁籤依照上例填入後按「套用」按鈕。

 

換設定「授權的角色」頁籤

按「全部授權」再套用。

「系統權限」頁籤也是「全部授權」再套用。

雖然會看到「權限不足」的錯誤訊息,但我的目地只是弄出一個 demo 用的帳號,

為了節省時間我只管給他最大權限可以 demo 即可。關掉視窗再進來看,部份權限還是有被授權的。

接下來使用剛剛創立的 apple 帳號登入

在 apple 帳號底下新增資料表

CREATE TABLE TABLE_NAME 
  ( 
     id_a      INT, 
     name_a    VARCHAR2(50), 
     address_a VARCHAR2(50) NULL, 
     PRIMARY KEY (id_a) 
  ) ;

INSERT INTO table_name (
    id_a,
    name_a,
    address_a
) VALUES (
    1,
    'mary',
    'taipei'
);

 

 

六、於 ASP.NET MVC 用 EF6 連接 Oracle database

怕文章會太長,連接 Oracle database 的流程只會重點圖片帶過。

兩種登入方式,一種為 TNS,另一種為 EZCONNECT。

如果你先前沒有設定好 tnsnames.ora,那就只能使用 EZCONNECT 方式手 key 各個欄位了。

 

 

 

記得使用 scaffolded 時請先把專案 Build 過一次。

 

 

 

結果成功接上 Oracle database

 

參考資料:

Oracle Database 18c Concepts

ODAC 18c Release 1 (18.3.0.0.0) Installation Instructions, Setup, and Notes

Oracle Data Provider for .NET

Database SQL Language Reference Data Types