2012-01-02 18 views
10

Napisałem zespół w języku C#, aby wykonać cały dostęp do danych dla bazy danych MySQL. Z powodzeniem użyłem zestawu (skompilowanej biblioteki dll) w mojej aplikacji pulpitu C# winform. Ale działa tylko na komputerach, na których zainstalowano "MySQL Connector Net 6.4.4".Błąd Framework jednostki MySQL - Określony dostawca sklepu nie może zostać znaleziony w konfiguracji lub jest nieprawidłowy

Próbowałem użyć tego samego zestawu z moim projektem witryny asp.net. Najpierw wystąpił błąd związany z brakującym ciągiem połączenia. Można to było łatwo rozwiązać, dodając ciąg połączenia MySQL do pliku web.config. Teraz dostaję ten błąd (śledzenie stosu wymienione poniżej), próbowałem dodać następujące biblioteki dll do mojego folderu bin, aby go rozwiązać, ale to nie zadziałało.

MySql.Data.dll 
MySql.Data.Entity.dll 
MySql.Web.dll 

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 
+0

Czy ciąg połączenia mają providerName = "System.Data .EntityClient "atrybut w nim? – GemCer

+0

Tak, właśnie sprawdziłem, żeby być pewnym. – Hoody

Odpowiedz

32

Ale to działa tylko na komputerach, które mieli "MySQL Connector Net 6.4.4" zainstalowany.

Czy to oznacza, że ​​próbujesz uruchomić swój kod na komputerze, na którym dostawca nie jest zainstalowany? W takim przypadku musisz również zarejestrować dostawcę w pliku konfiguracyjnym, ponieważ instalacja dodaje go do pliku machine.config, a jeśli go nie zainstalowałeś, dostawca nie jest aktualnie zarejestrowany.

Spróbuj dodać do pliku web.config:

<system.data> 
    <DbProviderFactories> 
    <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.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
+1

Dzięki, spróbuję tego dziś wieczorem. Na przyszłość, jaki jest najprostszy sposób na dokładne określenie, jakie potrzeby należy dodać do pliku konfiguracyjnego w tego rodzaju scenariuszach? – Hoody

+0

To działa, dzięki jeszcze raz. – Hoody

+3

Musiałem usunąć "Wersja = 6.4.4.0, Culture = neutral ...", mimo że mój MySql.Data.dll pasował dokładnie do tych cech (zgodnie z IL Spy) – Pakman

6

znalazłem miałem ten problem zbyt przy użyciu złącza samodzielny .NET 6.6.5 instalator.

Aby rozwiązać problem, po prostu odinstaluj autonomiczny instalator złącza .NET i zainstaluj instalator mysql-community-installer, ten instalator umożliwia dodawanie/usuwanie funkcji do MySQL, a jedną z jego funkcji jest złącze .NET, które ma Obsługa Entity Framework.

Po użyciu tego złącza wszystkie problemy z MySQL EF znikają.

+2

tak! to naprawiło to! –

+0

miał problem z instalatorem społeczności MySQL pod tym względem, że pobieranie pliku visual studio nadal kończyło się niepowodzeniem.Rozwiązał to, pobierając pełny instalator 180 MB w przeciwieństwie do 1.5mb. Powyżej to naprawić. – Knightsy

+0

@Greg .... To całkowicie działało !!!!!!. Byłem w tym wydaniu przez prawie 2 godziny, a rozwiązaniem było odinstalowanie samodzielnego złącza (w moim przypadku było to zapewnione przez Oracle ..) – atp9

0

Miałem ten błąd (używałem złącza .net 6.4.3) po odinstalowaniu wszystkich frameworków .net i ponownym ich zainstalowaniu. Rozwiązaniem było odinstalować i zainstalować 6.4.3 6.6.5

3

Dodaj ten w web config

<system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" /> 
    </DbProviderFactories> 
    </system.data> 
2

Dla osób, które osiągnęły ten stary pytanie za pośrednictwem Google jak ja:

Otrzymasz również ten błąd w przypadku uaktualnienia do wersji MySQL for Visual Studio 1.1.3, która jest pierwszą zgodną wersją z Visual Studio 2013, ale nadal używają oprogramowania MySQL Connector 6.6.6, które, o ile wiem, jest ostatnią wersją zgodną z Entity Framework 4.3.1.

Wiedzieliśmy, że musimy zaktualizować do EF5 (lub 6) ASAP, ale teraz to jest wymuszanie zmiany na nas w czasie bardzo niewygodne ...

Powiązane problemy