This content has been marked as final. Show 7 replies
The ADO.NET spec changed some fundamental APIs between .NET 1.x and 2. .NET Framework 1.x probably can't run any ADO.NET 2.0 provider. I'm not sure this scenario would work even if .NET Framework 1.x found an 11.2 version of ODP.NET. You would be using System.Data from .NET 1.x and Oracle.DataAccess from .NET 2.0.
Whether this is the root cause of your current issue, I can't say, but I don't think it's worth investigating further because you'll hit this problem eventually. The last version of ODP.NET for .NET 1.x was shipped with ODAC 188.8.131.52.21.
Thanks for your kind response.
Then, what would you suggest, if our apps have to be ablIe to run across multiple Oracle client, the lowest being Oracle 10.0.2, which only comes with 1.0 .net framework support, and highest so far is 11gR2.
We had the impression that ODP.net is forward compatible, and it seems this across .net framework upgrade is breaking it:(
Any advice would be greatly appreciated!
Just run each app with a different ODP.NET version. Many ODP.NET applications already do that.
Part of the Oracle Client is unmanaged. Chapter 2 in the ODP.NET book describes how to make sure each .NET app will use the correct version of its unmanaged files with the DllPath property. If you use DllPath, you can use multiple ODP.NET versions on the same machine without any problems.
ODP.NET is generally forward compatible with .NET versions. However, when an underlying app server or OS component makes a significant change in the next release, Oracle cannot ensure forward compatibility. Between ADO.NET 1.x and 2.0, Microsoft made significant changes. This is not unique to ODP.NET. It applies to all ADO.NET software. SqlClient 1.x will have the same problems as ODP.NET 1.x using .NET 2.0 libraries.
There's simply no support for .NET 1.x in 11.2 ODP. Further, if you try to use the 10.x/11.1 1.x ODP stuff on the 11.2 client, you'll get a TypeInitializationException "provider is not compatible with version of the client."
Your only options here really are to recompile the 1.x app with 2.x or higher so you can use 2.x ODP and 11.2 client, or to have an 11.1 or older client installed in addition to 11.2.
Theoretically it may be possible to use 11.2 odp with a 1.x app if you supply a binding redirect in your app/web.config, but I'm not sure I should even mention it for fear that you'll actually do it, and it's in no way shape or form a supported configuration by Oracle even if you get it to work. I mostly mention it to avoid a follow up "what if i do that" question :)