4 Stimmen

Aufrüstung von EntLib 4.1 auf 5 mit Oracle.DataAccess.Client

Ich aktualisiere ein Projekt von EntLib 4.1 auf EntLib 5. Ich habe die Migrationsanleitung überflogen, alle Referenzen geändert und alle Konfigurationsdateien auf EntLib 5 aktualisiert. Alles hat gut funktioniert, bis auf den Zugriff auf die Oracle-Datenbank. Mit der Konfigurationsdatei:

<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>
  <dataConfiguration defaultDatabase="prod">
    <providerMappings>
      <add databaseType="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data"
        name="Oracle.DataAccess.Client" />
    </providerMappings>
  </dataConfiguration>
  <connectionStrings>
    <add name="prod" connectionString="Data Source=dev;User Id=dev;Password=dev;"
      providerName="Oracle.DataAccess.Client" />
  </connectionStrings>
</configuration>

die mit 4.1 alle Aufrufe an DatabaseFactory.CreateDatabase() scheitert mit:

System.InvalidOperationException: The type Database cannot be constructed. You must configure the container to supply this value.

Wenn ich die Oracle.DataAccess.Client mit dem Microsoft System.Data.Oracleclient funktioniert alles wieder, aber nicht mit der ganzen ODP.net-Schönheit. Weiß jemand, wie man das mit EntLib 5 zum Laufen bringt?

Zum Wohl, Mlk

5voto

Michael Lloyd Lee mlk Punkte 14425

Es scheint, dass der Oracle Installer manchmal die Datenbank-Provider-Factory vergisst, die im Verzeichnis machine.config . Um dies zu beheben, muss Folgendes entweder in der app.config oder die machine.condig .

<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>

Ich denke, dass dies in EntLib4 daran liegt, dass EntLib4 die vorherige Version des Oracle-Clients verwendet (10.2.0.1, glaube ich. Die Oracle-Nummerierung ist ungerade).

1voto

Adauto Punkte 569

Verwenden Sie die in diesem Abschnitt gezeigte Konfiguration lien .

Oder sehen Sie sich die App.config des Beispiels an, das Sie am Ende des Beitrags unter demselben Link finden.

0voto

nick Punkte 11

ODP.NET 11g für Framework 4 verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X