2

展開を容易にするために、.NET プロジェクトをオラクルの管理に切り替えようとしています。ただし、テスト用の Win Server 2013 環境で次のエラーが発生します。

タイプ「Oracle.ManagedDataAccess.Client.OracleConnection」の接続のプロバイダ名を特定できません。

これまでに行った手順:

  1. ソリューションからすべての Oracle.DataAccess dll と参照を削除しました
  2. NuGet パッケージ マネージャーにOracle Data Provider for .NET (ODP.NET) Managed Driverを追加しました。
  3. Imports Oracle.DataAccessすべてのステートメントをに切り替えましたImports Oracle.ManagedDataAccess

ビルド エラーは発生せず、プロジェクトはローカルで正常に実行されます。ただし、テスト環境にデプロイすると、このエラーが発生します。テスト環境は Windows Server 2012 で、従来の Oracle 11.2.0 クライアント ツールがインストールされています。

これは私の接続作成コードです:

Public Sub New()
    MyBase.New(
        New OracleConnection(
            ConfigurationManager.ConnectionStrings("Entities").ConnectionString),
        True)
End Sub

私が試した 3 つの異なるスタイルの接続構成を次に示します (どちらもローカルで動作しますが、テスト環境では同じ問題が発生します)。

(見やすいようにフォーマットされています)

  <add 
      name="Entities"
      connectionString="
          Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
          User Id=_____;
          Password=_____;"
      providerName="Oracle.ManagedDataAccess.Client" />

  <add 
      name="Entities"
      connectionString="
          Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
          User Id=_____;
          Password=_____;"
      providerName="Oracle.DataAccess.Client" />

  <add 
      name="Entities"
      connectionString="
          Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
          User Id=_____;
          Password=_____;"
   />

どんな助けでも大歓迎です!

4

2 に答える 2

7

手動ダウンロード方法

マネージド ODAC の NuGet バージョンが Oracle によって作成されたものではないことを指摘してくれた @Christian Shay に感謝します。

マネージド Oracle データ アクセスを Entity Framework で使用するには、Visual Studio 2012 (.NET 4.5) で:

  1. Entity Framework 5.0.0.0をプルダウン

    Install-Package EntityFramework -Version 5.0.0

  2. 最新のOracle Data Access Components (ODAC)をダウンロードする

  3. 手動参照Oracle.ManagedDataAccess.dll

  4. このセクションを構成ファイルに追加します

  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver"
           invariant="Oracle.ManagedDataAccess.Client"
           description="Oracle Data Provider for .NET, Managed Driver"
           type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

そして、いつものように進みます。現時点では、Entity Framework 6 はまだ Oracle.ManagedDataAccess をサポートしていないようです。そのため、バージョン 5 を実行する必要があります。

また、.NET 4 を対象とする Visual Studio 2010 以前を使用している場合、NuGet は EF5 をプルダウンしますが、4.x アセンブリを使用することに注意してください。.NET 4 を使用する VS2010 でこれをテストしていません。

于 2014-03-14T20:22:12.800 に答える