Oracle数据库升级后是否必须重新编译.NET应用程序

时间:2016-03-09 11:48:17

标签: c# sql oracle oracle11g

我在C#.NET中开发了两个攻击Oracle 11g数据库的应用程序,现在客户端计划将数据库升级到Oracle 12c。 其中一个应用程序是Windows服务,另一个是桌面应用程序。 目前我正在使用Oracle.DataAccess.dll 版本2.112.2.0 ,它正常运行。 升级后我的应用程序是否会继续正常工作,还是应该用另一个dll重新编译我的应用程序? thx提前

5 个答案:

答案 0 :(得分:1)

只有您可以回答您的问题,因为我们无法知道您的应用在Oracle.DataAccess中使用了哪些功能。在单独的测试环境中执行升级并执行严格的测试以确保。

答案 1 :(得分:1)

理论上,您不需要重新编译。但只需分析您的代码,您就会确定它。因此,计划并执行服务和桌面应用程序上所有功能的回归测试,以确保。

答案 2 :(得分:1)

让我们逐点理解你的问题并理解它的变化,但是对于应用程序堆栈,Oracle数据库正在升级到12c但是对于你的代码,联系点是version-2.112.2.0,你正在使用它某些<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> ,现在重新编译取决于当前ODP.Net版本是否与Oracle 12c一起工作的事实,如果没有,那么你需要获得更新的兼容版本,这意味着重新编译,但即使在通过向GAC添加更新的ODP.Net二进制文件并在配置文件中使用Binding Redirect,可以避免这种情况,这意味着即使在运行时使用旧版本编译它也会加载更新的版本,这意味着没有运行时异常,这是通过许多生产系统完成的,当引入更新的从属二进制文件时,由于接口很少更改,如果您想要使用任何新的API,那么您肯定需要重新编译和重新部署。 另请查看链接 - Enabling automatic binding redirects manually

以下是app.config设置:

{{1}}

答案 3 :(得分:1)

取决于您可能使用的版本12中已弃用的功能。这是一个版本,像Oracle这样的公司努力使新版本向后兼容。或者,新版本可能存在您的代码触发的错误,但这不太可能。我希望测试和测试能够通过而不必花费太多时间。

答案 4 :(得分:0)

不,它应该以相同的方式工作。在极少数情况下,您可以使用Oracle 11g中已从Oracle 12c中删除的功能。即使在这种情况下,您也很可能必须修改实际代码,而不是升级到新的ODP.NET(Oracle.DataAccess.dll)版本。

请查看此文档以了解已移除的功能:Deprecated and Desupported Features for Oracle Database 12c