.NET Framework 4.0に対応したODP.NET(Oracle Data Provider for .NET)は、Oracle 11g対応のODP以降しか無いのですね。10g用として公開されているODP.NET(ODAC 10.2.0.2.21 に含まれるもの)は、.NET Framework 1.1と2.0用。
では、以下の疑問はどう解決すればいいのだろうかねぇ。
- ODAC 11.X以降でOracle Database 10gに接続しちゃってOK?
- ODPだけ10g/.NET Framework 2.0用を用いるけど、アプリは.NET 4.0でも問題ない?
11g用のODP.NETをOracle Database 10g用として使う
ここに「ODAC 11.2.0.1.2に含まれるODP.NETは10.xバージョンのOracle Databaseに接続できる」と書いてありますが、それはそのまま鵜呑みしていいのでしょうか。元ネタというかOracleの資料をきちんと読む必要がありますね。
- ODP.Net for framework 4.0 for Oracle 10g
- https://forums.oracle.com/thread/2314339
In-Proc SxSで.NET FW 2.0用のODP.NETを使う
.NET Framework 4.0では、1つのプロセス内で複数のランタイムを利用する「インプロセス サイドバイサイド(In-Proc SxS)」という機能を利用することができます。
- CLR徹底解剖/インプロセスサイドバイサイド
- http://msdn.microsoft.com/ja-jp/magazine/ee819091.aspx
これを利用すれば、.NET Framework 4.0で動くメインプログラムから、.NET Framework 2.0で動くアセンブリを呼び出すことも……多分できるはず。ODP.NETのバージョンを上げるとなると、「多分大丈夫だろうけど…」一通りのDBアクセス関連の処理は全部洗い直す必要がありそうですが、SxSを使えば、そこまで大がかりなテストは不要になるかもしれません。
どっちがいいのかなぁ。