Entity Framework 6 Database-first連接Oracle11g


Entity Framework 6 Database-first連接Oracle11g(圖文細說)

  本文發布地址:http://www.cnblogs.com/likeli/p/5577264.html

  目前Oracle已經推出了托管的ODP.NET驅動來連接Oracle數據庫。已經支持Code First,那么到目前位置,EF的三種模式都是可以操作Oracle數據庫的了。

相關文檔:

  EF6 Code First連接Oracle11g的Oracle官方資料:http://docs.oracle.com/cd/E56485_01/win.121/e55744/entityCodeFirst.htm#ODPNT8309

  database-first配置文檔(非官方):https://csharp.today/entity-framework-6-database-first-with-oracle/

  集成Visual Studio 2015的ODP.NET驅動官方下載:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

正文:

  好吧,我們開始來一個實際的例子。

  首先創建一個基於.net 4.5的MVC demo。名字叫做EntityFrameworkSixForOracle的工程。如下

 

創建完成后,我們打開Nuget包管理器,安裝一些包。

在Nuget包管理器中搜索 ManagedDataAccess

這里先安裝第二個,也就是oracle.ManagedDataAccess,然后再安裝oracle.ManagedDataAccess.EntityFramework。

原因是因為安裝oracle.ManagedDataAccess.EntityFramework后自動安裝oracle.ManagedDataAccess,但是oracle.ManagedDataAccess的版本較低,好像這兩個不同步,導致之后出現未知錯誤(僅懷疑,未驗證)。

然后將Entity Framework更新到最新版。

好的,到這步,引用工作就完成了。接下來配置DataBase-First。

在項目中創建一個文件夾Db,然后添加新項=》數據=》ADO.NET實體數據模型。

點擊上面的更改,然后可以看到目前所有的數據源,一般情況下,只有前面的兩項,第三項Oracle數據庫是沒有的。我們需要自行安裝Oracle官方提供的驅動程序。

我這里提供官方下載頁面,這需要有Oracle的帳號,另外也下載回來測試成功后,將安裝包上傳到CSDN,大家直接下載安裝即可。

官方下載頁:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

國內CSDN下載:http://download.csdn.net/detail/a406502972/9546928

下載回來的是一個58.69MB的安裝包,默認安裝就可以了。

上面Oracle官方說明的截圖已經很明白了,這是一個集成於Visual Studio 2015的Oracle驅動工具。另外,官方還提供了VS2013的集成工具。

安裝完成后,重啟VS,重復上面的步驟,會發現已經有了Oracle數據庫 源這一項。好了,問題解決,我們繼續。

選擇Oracle數據庫這一項,出現以下界面:

這里需要說明一下的,當前正在使用的Tnsnames.ora,若是我們配置的監聽文件不在上面顯示的位置,則點擊搜索,去自動查找,選擇位置和別名后,點擊復制,就可以將自己Tns的相關配置,復制到驅動程序的Tns里面了,再或者,直接用我們自己的Tns文件替換掉默認驅動程序的Tns也是可以的。

以上配置完成后,點擊測試,即可測試連接成功。這一步若是有什么不懂的地方,請留言。

弄好之后,確定保存。

然后選擇需要導入的表,或者視圖。最后單擊完成即可。

如此,EF6 Database-First模式連接Oracle11g的實例就完成了 。

添加一個控制器,寫一個查詢測試一下。

查詢前這個表的前100條看看。

好的,數據出來了,成功!

PS:使用oracle.ManagedDataAccess驅動的話,發布的應用不用再在本地安裝Oracle客戶端。

常見錯誤匯總(隨時更新):

1、在從數據庫更新模型的時候,提示模型已生成,但出現警告或錯誤

這是因為數據建表不規范,連最基本的主鍵都沒有。

 

下一章說 EF6 Code-first連接Oracle11g


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM