0

dll Oracle.DataAccess に問題があります。ワークステーションにはクライアントがインストールされており、一部のサーバーには別のクライアントがインストールされています。実行時に私はキャッチします

System.TypeInitializationException: The type initializer for 
'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> 
Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client
    at Oracle.DataAccess.Client.OracleInit.Initialize()
    at Oracle.DataAccess.Client.OracleConnection..cctor()
    --- End of inner exception stack trace ---
    at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)

catch 句では、現在の dll をアンロードし、別の場所 (構成ファイルで設定) をロードしたいと考えています。

出来ますか?それ以上に、それはこの問題を解決する良い方法ですか?

4

1 に答える 1

0

それに対処する方法の 1 つは、Oracle データ アクセスを抽象化することです。それぞれが特定の ODP への参照を持つ 2 つのアセンブリを作成します。インストールされているクライアントを特定するか、成功するまでアセンブリを 1 つずつロードして、インターフェイスを介して作業を試みます。しかし重要なのは、クライアント ソフトウェアはインターフェイスだけを認識している必要があるということですが、ODP 通信の実装は抽象化されます。

そして、これにはパターンがあります-プロキシ、デコレータ...あなたが選択します

于 2013-08-23T15:13:34.140 に答える