none
Hinzufügen ADO.NET Entity Data Model scheitert wegen fehlendem oder falschen Entity Framework-Datenbankanbieter

    Frage

  • Hallo,

    wir setzen Visual Studio Professional 2017 Version 15.5.4 mit den Oracle Developer Tools for .NET (12.2.0.1.0) ein und möchten das Entity Framework benutzen um aus einer Oracle-DB ein Entity Data Model zu erstellen.

    Ich habe dazu ein WPF-Projekt angelegt und dort mit dem Nuget Package Manager (Nuget Pakete für Projekt-Mappe verwalten) die Nuget Pakete für das EntityFramework 6.2.0 und Oracle.ManagedDataAccess und  OracleManagedDataAccess.EntityFramework installatiert (alternativ habe ich auch die Console verwendet):

    Anschließend habe ich ein "ADO.NET Entity Data Model" als neues Element zu Projekt hinzufügen ausgeführt.

    Dann habe ich "EF Designer aus Datenbank" als Model-Inhalt ausgewählt und im nächsten Schritt die Datenverbindung.

    Unter „Wählen Sie Ihre Version“ erscheint dann die Fehlermeldung:

    Das Projekt verweit auf die neuest Version von Entity Framework, für die Datenverbindung wurde jedoch kein mit dieser Version kompatibler Entity Framework-Datenbankanbieter gefunden.

    Im GAC habe ich die entsprechenden Einträge:

      Oracle.DataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f4
    29c47342, processorArchitecture=x86

      Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL

      Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral,
    PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL

    Die App.Config sieht folgendemassen aus:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework"
          type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          requirePermission="false"/>
        <section name="oracle.manageddataaccess.client"
          type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
      </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
          <provider invariantName="Oracle.ManagedDataAccess.Client"
            type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </providers>
      </entityFramework>
      <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.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </DbProviderFactories>
      </system.data>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <publisherPolicy apply="no"/>
            <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
            <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <oracle.manageddataaccess.client>
        <version number="*">
          <dataSources>
            <dataSource alias="MeineSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=UNSERSERVER)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=Oracle.World))) "/>
            <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
          </dataSources>
        </version>
      </oracle.manageddataaccess.client>
      <connectionStrings>
        <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client"
          connectionString="User Id=meinuser;Password=MeinPasswort;Data Source=MeineSource"/>
      </connectionStrings>
    </configuration>

    Was kann ich tun, um die Fehlermeldung zu beheben?

    Gibt es überhaupt Kunden, die das Entity Framework mit Oracle einsetzen oder versuchen wir hier etwas Exotisches?

    Freundliche Grüße

    Peter

    Donnerstag, 1. Februar 2018 12:35

Alle Antworten

  • Hallo Peter,

    ich denke nicht das die Verwendung von Oracle mit EF exotisch ist auch wenn ich selbst bisher Oracle nicht eingesetzt habe. Der Wizard hat hat mehr oder weniger von Anfang an immer wieder Probleme gemacht. Schau dir mal diese Anleitung an Link 

    Sollte diese auch nicht funktionieren könntest Du selbst auf die suche gehen "entity framework oracle database first" wäre meine Suchbegriffe  


    Gruß Thomas
    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
    Dev Apps von mir: Icon für UWP,  UI Strings
    Andere Dev Apps: UWP Community Toolkit Sample App

    Donnerstag, 1. Februar 2018 15:59