2016-10-03 15 views
2

我已經做了足夠的研究,但找不到答案。使用實體框架與現有的ORACLE DB。 Visual Studio 2012和已棄用的ODP.NET驅動程序

我有一個Oracle DB,我正在使用我的ADO.NET,它工作正常。但是,我希望將它與Entity Framework 6結合使用。由於DB已經存在,因此我不打算採用「Code First」方法。 以下是我遇到的問題。 在跳到結論之前請記住它們。

  • 我有VS 2012與舊的ODP驅動程序。 VS要我升級。 CANT
  • 我無法使用EDM生成圖表和代碼,因爲我沒有安裝最新的ODAC並且沒有連接到Oracle DB的選項
  • 如果我嘗試使用相同的連接字符串與做工精細用ADO.NET EF然後我得到followig錯誤

ORA-12154:TNS:在連接標識符指定

注意我使用LDAP連接到無法解析Oracle DB。

我也嘗試生成一個空的EDM並添加一個新的連接字符串,如下所示,然後我得到了一個不同的錯誤。

<add name="EF" connectionString="metadata=res://*/Model1.csdl 
           |res://*/Model1.ssdl 
           |res://*/Model1.msl; 
           provider=Oracle.ManagedDataAccess.Client; 
           provider connection string=&quot;data source=MY_SERVICE;password=MY_PASSWORD;persist security info=True;user id=MY_USERID&quot;" 
           providerName="System.Data.EntityClient" /> 

的實體類型是不是模型用於當前 上下文的一部分。

我的問題。

  • 是否有解決上述問題的方法。
  • 有沒有辦法映射Oracle表格,存儲過程,功能等手動?

我知道上面沒有太大意義,但這些都是我的約束。我正在嘗試避免長/舊的ADO.NET代碼。如果它不能完成,那也沒關係。

在此先感謝您的意見。

回答

0

由於像「ODAC」或「ADO.NET」這樣的術語很模糊,所以你不清楚你的問題是什麼。

ODAC是一個包含多個提供程序和驅動程序的軟件包。請清楚說明提供者(例如OraOLEDB.OracleMSDAORA)和參考資料(例如Oracle.DataAccess.ClientSystem.Data.OracleClient),並告訴我們哪一個在工作或不工作。

無論如何,它看起來像你有ODP.NET託管提供商(Oracle.ManagedDataAccess.Client)的問題,所以專注於那一個。顯然它沒有找到sqlnet.oraldap.ora文件。

檢查以下設置是否指向正確的這些文件中的位置:下在.NET配置文件<oracle.manageddataaccess.client>節中dataSources部分

  1. 數據源別名。
  2. tnsnames.ora文件中的數據源別名,位於.NET配置文件中由TNS_ADMIN指定的位置。位置可以由絕對或相對目錄路徑組成。
  3. tnsnames.ora文件中的數據源別名存在於與.exe相同的目錄中。

注意,不像其他的供應商ODP.NET託管提供程序讀取任何註冊表設置和不讀環境變量。

曾經有人ODP.NET託管提供不能解決從LDAP別名bug reported,請參閱以下解決方法:ODP.NET Managed library does resolve alias, but 32-bit library does

+0

謝謝你的答覆。我知道什麼是ODAC和ADO.NET。如果你再看看我的問題,你會注意到我沒有連接到ADO.NET的問題,但是我想使用EF 6.我使用LDAP,所以tnsnames.ora與討論沒有關係。說了我可以連接到數據庫。然而,在那個時候,我不確定如何告訴EF 6 Framework我想使用Database First Model(無需使用EDM)。我還在數據庫中看到了遷移表,所以確信它使用Code First我相信。 再次感謝您的意見。 – programmerboy

+0

那麼,實際上,規則應該更精確地說:「數據源別名,在'sqlnet.ora'和'tnsnames.ora'或'ldap.ora'文件中的引用......」 –

相關問題