Autor Beitrag
Määx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Do 31.10.13 19:43 
Hallo zusammen,

ich habe eine Anwendung die auf einer MySQL-Datenbank und dem EntityFramework basiert. Dazu habe ich das MySQL-VisualStudio-PlugIn installiert und bei mir auf dem Rechner funktioniert es wunderbar. Sobald ich die Anwendung jedoch veröffentliche und auf einem anderen Rechner installiere bekomme ich folgende Fehlermeldung:
ausblenden Quelltext
1:
Fehler 175: Der angegebene Speicheranbieter kann nicht in der Konfiguration gefunden werden oder ist ungültig.					


Jetzt habe ich die zugehörigen dlls (System.Data.Entity, EntityFramework, MySql.Data und MySql.Data.Entity) noch als lokal verfügbar gekennzeichnet. Dies hat jedoch nix geändert.

Die App.config habe ich unverändert gelassen (also von VS erzeugt):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <connectionStrings>
    <add name="MyDBEntities" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;provider connection string="server=127.0.0.1;user id=MYSQL_USER_NAME;password=MY_SQL_USER_PWD;persist security info=True;database=myTestDb"" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

In der zugehörigen edmx-Datei wird als Provider ein "Provider="MySql.Data.MySqlClient" angegeben. Ich dneke, dass es damit irgendwie zusammenhängt.
Hat jemand eine Idee wie ich das Problem lösen kann??

Vielen vielen Dank für eure Hilf eund viele Grüße
Määx
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4433
Erhaltene Danke: 908


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.10.13 21:01 
Was meint hier "veröffentlicht"? Setup Project, Click Once, XCopy, irgendein 3th Party Ding?
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Do 31.10.13 21:18 
Hey,

sorry! Ich meinte damit den Punkt im VisualStudio 2012 Erstellen->Projekt veröffentlichen. Der erzeugt dann einen installer der -wie ich dachte- alle nötigen dlls mit übernimmt.
Aber uach wenn ich das Programm aus dem debug-Ordner auf einen anderen Rechner kopiere erhalte ich diesen Fehler. Inzwischen habe ich zum testen einfach einmal auf meinem Entwicklungs-PC das MySQL-VisualStudio AddOn deinstalliert - sofort erhalte ich auch hier den Fehler.
Mir ist jedoch nicht klar, was ihm da fehlt da ich ja eigentlich alle dlls kopiert habe :(

Vielen Dank!
Määx
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4433
Erhaltene Danke: 908


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 31.10.13 21:30 
Liegen die benötigten Assemblies den auch alle im Ausgabe Ordner? Die MySql Assemblies sollten dort nur liegen wenn du die nicht nur referenzierst hast sondern die auch auf "Copy Local" stehen.
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Fr 01.11.13 09:06 
Hey,

ja, die Assemblie (System.Data.Entity, EntityFramework, MySql.Data und MySql.Data.Entity) sind alle als lokal verfügbar markeirt und liegen alle nach dem compilieren auch im Ausgabeverzeichnis :(
Vielleicht fehlt hier auch noch eine spezielle? Alle anderen in der Anwendung referenzierten hab ich aber nicht selbst hinzugefügt bzw verweisen direkt auf den Pfad des .NET Frameworks...

Viele Grüße
Määx
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4056
Erhaltene Danke: 842

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Fr 01.11.13 10:03 
Hallo Määx,

der beste Weg wird wohl sein, wenn separat auf dem anderen Rechner der MySql Connector/Net installiert wird.
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Fr 01.11.13 10:23 
Hey,

danke für den Tipp! Den Connector/Net hatte ich bereits auf den Zielrechnern installiert. Leider ohne Erfolg. Es wird scheinbar das VisualStudio-Plugin benötigt, welches jedoch nur installiert werden kann wenn auch das VS drauf ist.
Ich habe jetzt auf einem Rechner VS&Plugin installiert und dann das VisualStudio wieder deinstalliert. Das AddOn bleibt dann drauf und meine Anwendung funktioniert.

Habt ihr noch eine Idee was dieses AddOn da an Daten hinterlegt? Im Programmverzeichnis
C:\Program Files (x86)\MySQL\MySQL for Visual Studio 1.0.2\Assemblies\v4.0
liegen nur die beiden bereits als lokal verfügbar markierten dlls MySql.Data und MySql.Data.Entity und die nicht verwendete MySql.Web
Und in
C:\Program Files (x86)\MySQL\MySQL for Visual Studio 1.0.2\Assemblies\v2.0
liegen die gleichen Daten und zusätzlich MySql.Data.InstallState und MySql.Web.InstallState
Die v2.0er habe ich nicht referenziert.

Vielen Dank für eure Hilfe!!
Määx
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Fr 01.11.13 20:49 
Hallo zusammen,

ich habe jetzt die komplette Registry durchsucht. Es gibt auf dem Funktionsfähigem PC einen Schlüssel unter
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\DataProviders
Dieser stellt wohl den DataProvider für MySQL da (Invariatn Name: MySql.Data.MySqlClient). Genau dieser Name wird in der vom EntityFramework erstellten .edmx als Provider angesprochen. Ich denke also, dass hier das Problem liegt. Jetzt habe ich diesen Schlüssel einmal exportiert und auf einer anderen Maschine mal in die dort vorhandenen DataProviders (da es den VisualStudio-Eintrag hier nicht hab allerdings an einer anderen Registry-Stelle) angelegt. Dies hat nicht funktioniert. Jemand eine Idee wo ich den ablegen muss bzw. ob das die Problematik lösen könnte?

Vielen Dank
Määx
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Mo 04.11.13 09:22 
Hat niemand eine Idee wie man MySQL & EntityFramework zusammen nutzen kann? Oder fals es jemand geschafft hat ein Beispiel mit allen verwendeten dlls?

Vielen vielen Dank
Määx
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4433
Erhaltene Danke: 908


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 04.11.13 11:49 
Du kannst als Alternative einen Provider für MySQL bei Devart kaufen.

Wie sieht deine App.config aus? Da solltest du einen Eintrag im DbProviderFactories Bereich finden der sich auf MySql bezieht.
Wenn du denn nicht hast es aber auf deiner Maschine funktioniert hat der Installer das wahrscheinlich in die Machine.config gepackt und wird daher zumindest auf diesem Rechner immer gefunden.

Die machine.config findest du in %systemroot%\Microsoft.NET\Framework\(v2 oder v4)\CONFIG

Edit:
stackoverflow.com/qu...th-entity-frame-work
Bezieht sich in der Antwort auf ein Webproject ist aber das gleiche wenn man eine Desktop Anwendung hat. Msn ersetzte web.config halt nur durch app.config.

Für diesen Beitrag haben gedankt: Määx
Määx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 123



BeitragVerfasst: Mo 04.11.13 21:02 
JAAAA, das ist der Eintrag der fehlte! Vielen vielen Dank! Das hätte ich nie gefunden...
Super!!!

Vielen Dank
Määx