2011年11月19日 星期六

ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 3

 

安裝北風資料庫 ( Northwind ) 到 Oracle 中

我們一開始接觸微軟的 MS SQL Server 時,最先接觸到的範例資料庫就是 Northwind,而有很多的文章範例都是使用 Northwind 為資料來進行各種的功能操作,而既然之前「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 2」的文章內容中已經把 Oracle 11g XE 給安裝以及建立好要使用的 Tablespace,接下來的動作當然就是把 Northwind 的 Table 與資料給安裝到 Oracle 11g XE。


取得來源

微軟當然不可能直接提供 Oracle 版本的 Northwind 資料庫,而 Oracle 也沒有提供這個資料庫,所以說這個 Oracle版本的 Northwind 資料庫是由好心人所提供的,而這個好心人還是微軟的人(現在應該還是吧),在微軟 .NET Framework 3.5推出後,LINQ to SQL 以及 ADO.NET Entity Framework 也跟著與大家見面,雖然微軟說只要資料庫廠商依循著 Entity Framework 的介面去做 Provider 的開發,就可以使各家的資料庫可以讓開發者使用 ADO.NET Entity Framework 來對各家的資料進行開發,但是這麼久以來,似乎 ADO.NET Entity Framework 只有對 MS SQL Server 有足夠的支援,畢竟是自家產品,然而其他家資料庫的支援依然不足,Oracle 一直到現在(2011年11月)對於Entity Framework 的 Provider 也還只是 Beta,而當時剛推出 .NET 3.5 以及 Entoty Framework 的時候,因為只有對 MS SQL Server 有比較完整的支援,對於想要使用 Entity Framework 來對 Oracle 資料庫進行功能開發的開發人員就沒有辦法得到解決,所以 Jaroslaw Kowalski 就寫了一個「EFOracleProvider」來達成 Entity Famework 去操作 Oracle 的功能,

Sample Entity Framework Provider for Oracle

http://archive.msdn.microsoft.com/EFOracleProvider

image

不過……我建議各位在做專案的時候千萬不要用這個EFOracleProvider,畢竟這只是一個「Sample」,拿來做小專案或是不是太複雜的專案時,是可以應付的,如果是比較大型的專案時,就真的不要拿自己的前途與錢途來當賭注。

不建議的原因其一是,不支援Visual Studio的實體模型產生精靈,講白一點就是你無法去使用拖拉放的方式來完成一個EDMX。

不建議的原因其二是,產生實體模型(EDMX)是必須要下指令的方式,並且還要針對一些檔案進行修改後才能產生EDMX。

不建議的原因其三是,要使用EFOracleProvider還要經過一些手續,例如修改Machine.Config、將dll檔案手動加入GAC,手續繁瑣。

不建議的原因其四是,在.NET Framework 4的專案運作,必須自行對EFOracleProvider專案做重新編譯,然後再去手動修改Machine.Config以及加入GAC。

不建議的原因其五是,老手都不一定可以搞定上面那一堆繁瑣的手續,更何況是新手與一般的開發人員。

……

其實還有很多,但就是因為太多了所以就不想寫下去,因為這是我實地經歷過一個使用 EFOracleProvider 開發專案的經驗,另外試圖在 .NET Framework 4 去使用 EFOracleProvider 進行開發卻碰到一堆不可解之問題的心得。

 

回到正題,

Sample Entity Framework Provider for Oracle – Downloads

EFOracleSampleProvider for VS2008 SP1

http://archive.msdn.microsoft.com/EFOracleProvider/Release/ProjectReleases.aspx?ReleaseId=1395

image

下載「EFOracleSampleProvider.zip」,這是一個壓縮檔,裡面的內容如下:

SNAGHTML1830989

壓縮檔裡面是一個EFOracleProvider的Solution內容,如果有興趣了解的人可以自行仔細的去了解,因為我不建議將這個EFOracleProvider用在正式的專案之中,如果你是有興趣去了解如何寫一個EF的Provider,可以參考看看。

壓縮檔之中有一個「OracleNorthwind」的目錄,這就是我們要的東西啦!

SNAGHTML186cdb2

這裡面有兩個副檔名為「*.cmd」的檔案,這兩個檔案可以忽略,但還是要去看一下指令檔的內容,這原本是要讓使用者可以藉由指令檔的執行去自動的建立、移除OracleNorthwind,

install_db.cmd

C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus.exe edmuser/123456@127.0.0.1 @Create_Northwind_Oracle.sql
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus.exe edmuser/123456@127.0.0.1 @Northwind_Oracle_Data.sql
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus.exe edmuser/123456@127.0.0.1 @Northwind_StoreProcs.sql

安裝指令檔,我們可以照著這份指令檔的執行順序去手動建立Table、新增資料、建立Stored Prtocedure,其實我們也可以去修改指令檔的內容,不過就執行一次,除非有需要安裝多次,不然三個動作就手動做一做就好了。

uninstall_db.cmd

C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus.exe edmuser/123456@127.0.0.1 @Drop_Northwind_Oracle.sql

移除指令檔,就是完全移除OracleNorthwind的內容。

 

安裝OracleNorthwind

按照順序的去逐一執行安裝所需要的SQL指令檔,

  1. Create_Northwind_Oracle.sql
  2. Northwind_Oracle_Data.sql
  3. Nrthwind_StoreProcs.sql

執行Create_Northwind_Oracle.sql

image

執行結果,建立好Northwind的所有Table

image

 

執行Northwind_Oracle_Data.sql

image

這個檔案的執行會比較久,因為資料蠻多的,執行完畢之後我們看一下「OrderDetails」的內容

image

 

執行Nrthwind_StoreProcs.sql

image

執行結果,

image

經過以上的操作就完成建立在Oracle的Northwind資料庫。

 

 

有關「EFOracleProvider」的相關連結

提供給有興趣想要了解EFOracleProvier的朋友,

下一篇就來說說Oracle所推出的「Oracle Data Access Components (ODAC) for Microsoft Entity Framework and LINQ to Entities」(2011-11-19)目前版本Beta3 (Updated: 2011-10-17)

 

以上

2 則留言:

  1. 不好意思,我想要學習,但連結上的"http://archive.msdn.microsoft.com/EFOracleProvider/Release/ProjectReleases.aspx?ReleaseId=1395"已失效了,請問您有文章中的「EFOracleSampleProvider.zip」這個檔案嗎?謝謝

    回覆刪除
    回覆
    1. 現在已經是 2018 年了,這篇文章已經是 2011 年時所寫的,連結失效是正常,技術早已過時就讓它消逝吧
      目前 oracle 官方已經有提供 Entity Framework 的支援
      http://www.oracle.com/technetwork/database/windows/downloads/index.html
      相關的 Entity Framework 與 Oracle 技術資訊在網路上也可以找到很多
      不過在找的時候要注意一下文章發表的時間
      這篇的內容就忘了吧(而且我還在一開始就寫了五個不建議)

      刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。