2016-03-09 48 views
0

我有兩個在C#.NET中開發的應用程序,它們針對Oracle 11g數據庫進行攻擊,現在客戶端計劃將數據庫升級到Oracle 12c。 其中一個應用程序是Windows服務,另一個是桌面應用程序。 此刻,我正在使用Oracle.DataAccess.dll版本2.112.2.0,它工作正常。 升級後我的應用程序能否繼續正常工作,還是應該用另一個dll重新編譯我的應用程序? thx預先在Oracle數據庫升級之後,我是否必須重新編譯.NET應用程序

回答

1

只有您可以回答您的問題,因爲我們不可能知道您的應用程序在Oracle.DataAccess中使用了哪些功能。在單獨的測試環境中執行升級,並執行嚴格的測試。

+0

嗨,thx爲您的興趣。我只在數據庫的表中執行一些插入,而不是更多。 – Dinalan

+0

然後做你的功課。查看版本之間的差異以及是否引入了會影響您的應用程序的重大更改。 –

+0

他們不是作業,thx爲您提供幫助。 – Dinalan

1

理論上,您不需要重新編譯。但只是分析你的代碼,你一定會知道的。因此,計劃並執行服務和桌面應用程序上的所有功能的迴歸測試以確保。

1

讓我們明白你的問題有點不同和理解正在改變它,但對於應用程序堆棧的Oracle數據庫被升級到12C,但對你的代碼的接觸點是ODP.Net (Oracle.DataAccess.dll),您使用的是某些version-2.112.2.0,現在重新編譯取決於當前的ODP.Net版本是否適用於Oracle 12c,如果沒有,那麼您需要獲得新的兼容版本,這意味着重新編譯,但即使在這種情況下,您可以避免它,通過在GAC中添加一個更新的ODP.Net二進制文件,並在配置文件中使用Binding Redirect,這意味着即使在運行時使用舊版本進行編譯,它也會加載更新的版本,這意味着沒有運行時異常,這是由許多生產系統,當引入更新的相關二進制時,因爲int如果你想使用任何新的API,那麼你的界面很少會改變,那麼你肯定需要重新編譯和重新部署。 同時檢查鏈接 - Enabling automatic binding redirects manually

下面將設定的app.config:

<configuration> 
    <runtime> 
<dependentAssembly> 
     <assemblyIdentity name="Oracle.DataAccess" 
      publicKeyToken="-- ODP.Net Public Token --" 
      culture="en-us" /> 
      <bindingRedirect oldVersion="2.112.2.0" newVersion="-- New Version --" /> 
     </dependentAssembly> 

    </runtime> 
</configuration> 
1

取決於你可能使用了12版中不建議使用哪些功能。這是一個版本,像Oracle這樣的公司正在努力使新版本向後兼容。或者,新版本有可能會觸發代碼,但這不太可能。我希望測試和測試通過,而不必投入太多時間。

0

不,它應該以相同的方式工作。在極少數情況下,您可能會使用已從Oracle 12c中刪除的Oracle 11g中的函數。即使在這種情況下,您最有可能不得不修改您的實際代碼,而不是升級到新的ODP.NET(Oracle.DataAccess.dll)版本。

檢查此文件的刪除功能:Deprecated and Desupported Features for Oracle Database 12c

相關問題