2014-09-16 11 views
21

Otrzymuję wyjątek Nierozpoznany element "dostawcy" w środowisku wykonawczym, gdy używam Entity Framework 5.0.0 z .NET 4.0. Właściwie z .NET 4.0 jest to wersja Entry Framework wersji 4.4.0, która jest ładowana, gdy robię pakiet instalacyjny z NuGet. Kiedy sprawdzić właściwości pliku w Eksploratorze widzę tak:Entity Framework: Nierozpoznany element "dostawca wyjątek"

enter image description here

Oto mój plik konfiguracyjny

<configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> 
    <connectionStrings> 
    <add name="xxx" connectionString="metadata=res://*/StreetMusicModel.csdl|res://*/StreetMusicModel.ssdl|res://*/StreetMusicModel.msl;   provider=MySql.Data.MySqlClient;provider connection string='   server=xxx.net;   user id=xxx;   password=xxx;   database=xxx'" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v12.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" /> 
    </providers> 
    </entityFramework> 

mam uczucie Entity Framework 4.4.0 nie jest w stanie rozpoznać metka. Czy mogę po prostu usunąć lub zmienić nazwę sekcji? Po usunięciu sekcji otrzymuję kolejny wyjątek: Dostawca podstawowy nie powiodło się w dniu Otwarcia.

+0

spróbuj usunąć ", Wersja = 4.4.0.0, Culture = neutralny, PublicKeyToken = b77a5c561934e089' –

Odpowiedz

51

Miałem ten problem po obniżeniu wersji EF z wersji 6 do wersji 5.0.0 za pomocą Nuget. Myślę, że problem polega na tym, że konfiguracja dostawców jest dodawana podczas dodawania EF v6, ale nie jest usuwana po starszej wersji. Tak więc, można po prostu usunąć zawartość w ciągu <providers> znaczniki i znaczniki siebie i będzie działać prawidłowo:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="v12.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 
+0

usuwanie działa dla mnie. Jeśli usuniesz plik konfiguracyjny, VS2012 ponownie go utworzy z obraźliwymi znacznikami i muszę je ręcznie usunąć. dlaczego miałbym się tym zastanawiać? – timothy

+0

, aby odpowiedzieć na mój komentarz - usunąłem plik .exe.config z katalogu bin, a nie z pliku App.config. Usuń z pliku App.config i wszystko jest w porządku. – timothy

+1

@timothy To jeden z tych potrójnych błędów facepalm, jakie robią programiści. Po prostu zrobiłem to dzisiaj. Nie wiem, gdzie była moja głowa. – Apostrofix

0

Musisz usunąć tag z pliku app.config Twojego projektu, a nie z YourProjectName.dll Plik .config, ponieważ automatycznie usunie go z pliku YourProjectName.dll.config po zbudowaniu projektu.

Uwaga: odpowiedź znajduje się w powyższym komentarzu. Właśnie połączyłem odpowiedź tutaj.