C# Visual studio 2008+;甲骨文18c

C# Visual studio 2008+;甲骨文18c,c#,oracle,visual-studio-2008,oracle10g,oracle18c,C#,Oracle,Visual Studio 2008,Oracle10g,Oracle18c,我有两个在C#NET中开发的应用程序,它们攻击Oracle 10g数据库,现在客户端正计划将数据库升级到Oracle 18c。其中一个应用程序是web应用程序,另一个是桌面应用程序。目前我正在使用Oracle.DataAccess.dll,它工作正常。升级后,我的应用程序是否仍能正常工作,还是应该使用另一个dll重新编译我的应用程序?这取决于您的Oracle.DataAccess.dll的版本。你没有告诉我们,所以请看一下 如果您的数据库是10.2.0,则Oracle.DataAccess.d

我有两个在C#NET中开发的应用程序,它们攻击Oracle 10g数据库,现在客户端正计划将数据库升级到Oracle 18c。其中一个应用程序是web应用程序,另一个是桌面应用程序。目前我正在使用Oracle.DataAccess.dll,它工作正常。升级后,我的应用程序是否仍能正常工作,还是应该使用另一个dll重新编译我的应用程序?

这取决于您的
Oracle.DataAccess.dll
的版本。你没有告诉我们,所以请看一下

如果您的数据库是10.2.0,则
Oracle.DataAccess.dll
11.2版和12.1版应该可以工作,否则您必须升级Oracle客户端

注意,Oracle.DataAccess.dll的版本必须与Oracle客户端完全匹配。安装多个Oracle客户端可能是一项挑战,最好在安装新客户端之前完全删除旧版本

如果要安装Oracle Client 12.2或更新版本,请查看以下内容:


通常您不必重新编译应用程序。如果GAC中定义了
Oracle.DataAccess.dll
,则应用程序将自动加载由GAC策略驱动的正确版本的
Oracle.DataAccess.dll

这取决于
Oracle.DataAccess.dll
的版本。你没有告诉我们,所以请看一下

如果您的数据库是10.2.0,则
Oracle.DataAccess.dll
11.2版和12.1版应该可以工作,否则您必须升级Oracle客户端

注意,Oracle.DataAccess.dll的版本必须与Oracle客户端完全匹配。安装多个Oracle客户端可能是一项挑战,最好在安装新客户端之前完全删除旧版本

如果要安装Oracle Client 12.2或更新版本,请查看以下内容:


通常您不必重新编译应用程序。如果GAC中定义了
Oracle.DataAccess.dll
,则应用程序将自动加载由GAC策略驱动的正确版本的
Oracle.DataAccess.dll

您可以做的最好的事情是尝试一下。不过,你的运气会更好。如果您至少可以升级到Visual Studio 2010和目标.NET 4.0以便使用,或者升级到4.6.1或.NET Core 2.0以便使用。但是,托管提供程序不支持某些内容,例如
OracleDbType.Object
。每次升级Oracle版本时,我们都会在与数据库相同的DLL版本上重新编译和测试。这是确保兼容性的最佳方法。但这可能取决于您与特定Oracle功能的紧密耦合程度。您至少需要进行彻底的回归测试,并且不应该假设@madreflection
Oracle.ManagedDataAccess
无法连接到10g数据库,因此如果您希望进行无缝迁移,在这里它可能不是最佳选项。@WernfriedDomscheit:问题是客户端正在升级到18c。我是不是遗漏了什么?我将Oracle.ManagedDataAccess[.Core]用于本地18c XE实例。如果他们两个都需要支持,是的,那将是禁止的,但没有人说过。你能做的最好的事情就是尝试一下。不过,你的运气会更好。如果您至少可以升级到Visual Studio 2010和目标.NET 4.0以便使用,或者升级到4.6.1或.NET Core 2.0以便使用。但是,托管提供程序不支持某些内容,例如
OracleDbType.Object
。每次升级Oracle版本时,我们都会在与数据库相同的DLL版本上重新编译和测试。这是确保兼容性的最佳方法。但这可能取决于您与特定Oracle功能的紧密耦合程度。您至少需要进行彻底的回归测试,并且不应该假设@madreflection
Oracle.ManagedDataAccess
无法连接到10g数据库,因此如果您希望进行无缝迁移,在这里它可能不是最佳选项。@WernfriedDomscheit:问题是客户端正在升级到18c。我是不是遗漏了什么?我将Oracle.ManagedDataAccess[.Core]用于本地18c XE实例。如果他们两者都需要支持,是的,那将是禁止性的,但没有人说这一点。