2016-06-28 14 views
1

Ich versuche, ein Projekt in C# mit WPF als meine Front-End und EntityFramework/MySql als meine backed, aber ich kann nicht meinen Code, um sogar eine Verbindung zu meiner DB.C# WPF mit MySql und EntityFramework

Die Struktur meines Projekts ist wie folgt:

  1. Modelle
  2. Data Layer Framework (Repository-Schnittstellen, UnitOfWork Schnittstelle, etc.)
  3. EntityFramework/MySql
  4. Dienstleistungen
  5. UI (Ich möchte meine Verbindungszeichenfolgen hier)

Ich habe den .NET-Connector von Oracle installiert, und ich habe eine Reihe verschiedener Nuget-Pakete ausprobiert, aber immer, wenn mein Code versucht, irgendetwas in der EntityFramework/MySq-Ebene zu tun, erhalte ich eine Ausnahme.

Zur Zeit habe ich die folgenden Nuget Pakete installiert:

  1. Entity Framework
  2. MySql.Data
  3. MySql.Data.Entity

Die app.config in mein EntityFramework/MySq Schicht ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    </configSections> 
    <entityFramework> 
     <providers> 
      <provider invariantName="MySql.Data.MySqlClient" 
       type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity"/> 
     </providers> 
    </entityFramework> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-6.9.8.0" newVersion="6.9.8.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
    <system.data> 
     <DbProviderFactories> 
      <remove invariant="MySql.Data.MySqlClient"></remove> 
      <add name="MySQL Data Provider" 
       invariant="MySql.Data.MySqlClient" 
       description=".Net Framework Data Provider for MySQL" 
       type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.2.0"/> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 

Und die app.config in meiner UI-Ebene ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
     <add name="VolunteerDb" connectionString="server=localhost;user id=root;password=mypass;database=mydb" providerName="MySql.Data.MySqlClient" /> 
    </connectionStrings> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.9.8.0" newVersion="6.9.8.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Und wenn ich versuche, die DB in meinem Repository zu laufen und greife ich auf die folgende Ausnahme erhalten:

Zusätzliche Informationen: Konnte Datei oder Assembly 'MySql.Data, Version = 6.9.8.0, Culture = Neutral, PublicKeyToken = C5687fc88969c44d' oder einer seiner Abhängigkeiten nicht laden. Die manifest Definition befindet Assembly nicht die Baugruppe

Referenz entsprechen

Was muss ich tun, um EntityFramework Arbeit mit MySql zu bekommen? Jede Hilfe dazu wäre willkommen!

bearbeiten

Hier ist, was die packages.config wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="EntityFramework" version="6.1.3" targetFramework="net45" /> 
    <package id="Google.ProtocolBuffers" version="2.4.1.555" targetFramework="net45" /> 
    <package id="MySql.Data" version="7.0.2-DMR" targetFramework="net45" /> 
    <package id="MySql.Data.Entity" version="7.0.2-DMR" targetFramework="net45" /> 
</packages> 
+0

könnten Sie Ihre packages.config in Ihre Frage aufnehmen? – chandler

Antwort

0

Es sieht aus wie Sie Macht die falsche Version von MySQL haben Ihre Pakete/Referenzen.Versuchen Sie, diese in Package Manager-Konsole (Tools> Nuget Package Manager> Package Manager-Konsole):

Uninstall-Package MySql.Data 

Install-Package MySql.Data -version 6.9.8 

PS: Sie haben könnten Uninstall-Package MySql -force

+0

@ amura.cxg lassen Sie mich wissen, wenn das nicht funktioniert – chandler

+0

Ich hatte eine ähnliche Antwort vor gesehen, aber wenn ich 'Install-Paket MySql-Version 6.9.8 'auf meinem Projekt EntityFramework/MySql ausführen, gibt es mir diesen Fehler 'Install-Paket: Die Version '6.9.8' des Pakets 'MySql'' konnte nicht gefunden werden. –

+0

@ amura.cxg Entschuldigung, ich habe die' .Data 'vergessen. Bitte sehen Sie sich die aktualisierte Antwort an. – chandler

0

versuche laufen, um die Zeilen Ihrer Konfigurationsdateien zu ändern:

<bindingRedirect oldVersion="0.0.0.0-6.7.2.0" newVersion="6.7.2.0" /> 
Verwandte Themen