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