Nach dem Herunterladen des EF6 per Nuget und dem Versuch, mein Projekt auszuführen, wird der folgende Fehler zurückgegeben:
Für den ADO.NET-Anbieter mit dem invarianten Namen 'System.Data.SqlClient' wurde kein Entity Framework-Anbieter gefunden. Stellen Sie sicher, dass der Anbieter im Abschnitt 'entityFramework' der Anwendungskonfigurationsdatei registriert ist. Weitere Informationen finden Sie unter http://go.microsoft.com/fwlink/?LinkId=260882 .
entity-framework
Fernando Vellozo
quelle
quelle
providers
undprovider
so, also überlegen Sie es zu entfernen?public BaseStorage(): base ("RaptorDB") {}
, BaseStorage () erbt von DbContext in EF5 alles hat perfekt funktioniert, nicht bereits in EF6.Antworten:
Ich bin gerade auf das gleiche Problem gestoßen und es sieht so aus, als ob EntityFramework, obwohl es über NuGet Package Manager installiert wurde, nicht korrekt im Projekt installiert wurde.
Ich konnte das Problem beheben, indem ich den folgenden Befehl in der Package Manager-Konsole ausführte :
quelle
-Pre
Option, um nuget anzuweisen, Vorabversionspakete zu installieren. Ich empfehle es nicht. Ich habe einen ähnlichen Fehler, aber die Lösung bestand darin, EntityFramework einfach im Host-Projekt zu installieren. Ich habe es in einer Klassenbibliothek installiert, aber nicht im Hauptprojekt (Web / Konsole / oder was auch immer)EntityFramework.SqlServer.dll
, das dem Debug-Ordner hinzugefügt wurde - Problem behoben.Sie haben einem Klassenbibliotheksprojekt EF hinzugefügt. Sie müssen es auch dem Projekt hinzufügen, das darauf verweist (Ihre Konsolen-App, Website oder was auch immer).
quelle
EntityFramework.SqlServer.dll
dass in das bin-Verzeichnis kopiert wird. Das Hinzufügen einer starken Referenz kann Ihre Architektur beschädigen (wenn Sie mehrere Ebenen erstellt haben, sollte Ihre ausführende Assembly auf oberster Ebene nicht einmal über EF Bescheid wissen). Stattdessen können Sie sicherstellen, dass der SQL Server-Anbieter kopiert wird. Siehe zum Beispiel stackoverflow.com/a/19130718/870604Sie müssen Entity Framework nicht in Ihrer Konsolenanwendung installieren, sondern nur einen Verweis auf die Assembly EntityFramework.SqlServer.dll hinzufügen. Sie können diese Assembly aus dem Klassenbibliotheksprojekt, das Entity Framework verwendet, in einen LIB-Ordner kopieren und einen Verweis darauf hinzufügen.
Zusammenfassend:
Ich hoffe, es hilft.
quelle
Sie können diese Meldung auch sehen, wenn Sie vergessen haben, "EntityFramework.SqlServer.dll" einzuschließen.
Es scheint sich um eine neu hinzugefügte Datei in EF6 zu handeln. Anfangs hatte ich es nicht in mein Zusammenführungsmodul aufgenommen und bin auf das hier aufgeführte Problem gestoßen.
quelle
Anstatt EntityFramework.SqlServer zum Hostprojekt hinzuzufügen, können Sie einen statischen Verweis darauf aus Ihrem Modell- / Entitätsprojekt wie folgt sicherstellen
Dadurch wird der Erstellungsprozess die Assembly mit dem Hostprojekt einschließen.
Weitere Informationen in meinem Blog http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/
quelle
Wenn Sie Entity Framework 6 über installieren
Nuget
. EntityFramework.SqlServer fehlt manchmal für eine andere ausführbare Datei. Fügen Sie einfach dasNuget
Paket zu diesem Projekt hinzu.Manchmal funktioniert das oben genannte für Testprojekt nicht
Um dieses Problem in Test Project zu lösen, platzieren Sie diese Methode einfach in Test Project:
Diese Methode wurde nie aufgerufen, aber meiner Beobachtung nach entfernt der Compiler alle "unnötigen" Assemblys, und ohne das
EntityFramework.SqlServer
Material zu verwenden, schlägt der Test fehl.quelle
EntityFramework.SqlServer
wird Ihrer Klassenbibliothek hinzugefügt, aber wenn es nicht verwendet wird, wird es nicht im Ausgabeordner Ihrer Anwendung abgelegt. Ich habe das Problem behoben, indem ich eine hinzugefügt habeExecutionStrategy
, was ich noch tun musste. Durch Hinzufügen einer Zeile wieSetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
in einerDbConfiguration
Klasse wurde das Problem behoben.Fügen Sie diese Funktion hinzu
Die Datenbankkontextklasse in der Bibliotheksklasse und die fehlende DLL EntityFramework.SqlServer.dll werden an die richtigen Stellen kopiert.
.
quelle
FixEfProviderServicesProblem
Ich habe es im Konstruktor versucht, ohne Glück.Nichts davon hat bei mir funktioniert. Ich habe die Lösung in einer anderen Frage zum Stapelüberlauf gefunden . Ich werde es hier als einfache Referenz hinzufügen:
quelle
Ich habe den gleichen Fehler bei der Verwendung von Entity Framework 6 mit SQL Server Compact 4.0 erhalten. Der Artikel über MSDN für Entity Framework-Anbieter für EF6 war hilfreich. Das Ausführen der entsprechenden Provider-Befehle als Nuget-Pakete in der Package Manager-Konsole kann das Problem lösen, da auch NuGet-Pakete automatisch Registrierungen zur Konfigurationsdatei hinzufügen. Ich rannte
PM> Install-Package EntityFramework.SqlServerCompact
, um das Problem zu lösen.quelle
Dieses Problem ist heute aufgetreten, als ich mit einer Reihe von Webdiensten in unterschiedlichen Projekten und einem separaten Projekt mit Integrationstests für einige dieser Dienste gearbeitet habe.
Ich verwende dieses Setup seit einiger Zeit mit EF5, ohne Verweise auf EF aus dem Integrationstestprojekt einfügen zu müssen.
Jetzt, nach dem Upgrade auf EF6, muss ich anscheinend auch einen Verweis auf EF6 in das Integrationstestprojekt aufnehmen, obwohl es dort nicht verwendet wird (so ziemlich wie oben von user3004275 ausgeführt ).
Anzeichen dafür, dass Sie vor dem gleichen Problem stehen:
Der dritte Punkt hat mich für eine Weile abgeworfen, und ich bin mir immer noch nicht sicher, warum dies erforderlich ist. Das Hinzufügen einer Referenz zu EF6 in meinem Integrationstest-Projekt hat es auf jeden Fall gelöst ...
quelle
Wenn der Fehler in Testprojekten auftritt, besteht die schönste Lösung darin, die Testklasse zu dekorieren mit:
quelle
Das Startprojekt, das auf das Projekt verweist, in dem Entity Framework verwendet wird, benötigt die folgenden zwei Assemblys in seinem bin-Ordner:
Durch Hinzufügen von a
<section>
zur<configSections>
Datei .config im Startprojekt wird die erste Assembly in diesem bin-Verzeichnis verfügbar. Sie können dies aus der .config-Datei Ihres Entity Framework-Projekts kopieren:Um die zweite DLL im Ordner bin verfügbar zu machen, obwohl dies nicht praktikabel ist, kann eine manuelle Kopie aus dem Ordner bin des Entity Framework-Projekts erstellt werden. Eine bessere Alternative besteht darin, den Post-Build-Ereignissen des Entity Framework-Projekts die folgenden Zeilen hinzuzufügen, die den Prozess automatisieren:
quelle
Ich bin heute gerade auf dieses Problem gestoßen. Ich habe eine Datenrepository-Klassenbibliothek mit EF63 NuGet-Paket und Konsolenanwendung zum Testen, die nur auf Klassenbibliotheksprojekte verweisen. Ich habe einen sehr einfachen Post-Build-Befehl erstellt, der EntityFramework.SqlServer.dll aus dem Ordner Bin \ Debug der Klassenbibliothek in den Ordner Bin \ Debug der Konsolenanwendung kopiert und das Problem behoben hat. Vergessen Sie nicht, den Abschnitt entityFramework zur .config-Datei der Konsolenanwendung hinzuzufügen.
quelle
Fügen Sie unten zu Ihrer app.config hinzu.
quelle
<configSections>
-<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
Das Löschen des BIN-Ordners hat es für mich getan
quelle
Sie sollten einen statischen Verweis auf die Assembly EntityFramework.SqlServer.dll erzwingen , aber anstatt einen Dummy-Code einzufügen , können Sie dies auf eine schönere Weise tun:
Wenn Sie bereits eine DbConfiguration- Klasse haben:
Wenn Sie keine DbConfiguration- Klasse haben, müssen Sie beim Start der App den folgenden Code eingeben (bevor EF verwendet wird):
quelle
Ich habe gerade das Entity Framework mit Nuget neu installiert. Befolgen Sie die Anweisungen unter dem folgenden Link: http://robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html
Ich denke, das Problem wird gelöst.
quelle
Erweitern Sie die Datei YourModel.edmx und öffnen Sie die Klasse YourModel.Context.cs unter YourModel.Context.tt.
Ich habe die folgende Zeile im Abschnitt "using" hinzugefügt und der Fehler wurde für mich behoben.
using SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices;
Möglicherweise müssen Sie diese Zeile jedes Mal zur Datei hinzufügen, wenn die Datei automatisch generiert wird.
quelle
Ich hatte auch ein ähnliches Problem. Mein Problem wurde wie folgt gelöst:
quelle
Es sieht so aus, als hätte niemand erwähnt, dass zuerst geprüft wurde, ob System.Data.SqlClient im System installiert ist und ob darauf verwiesen wird.
Ich habe mein Problem gelöst, indem ich System.Data.SqlClient installiert und einen neuen Anbieter in app.Config hinzugefügt habe
quelle
Stellen Sie außerdem sicher, dass Ihr Startprojekt das Projekt ist, das Ihren Datenbankkontext (oder die relevante app.config) enthält. Meins hat versucht, ein Website-Projekt zu starten, das nicht über alle erforderlichen Konfigurationseinstellungen verfügt.
quelle
Ich habe fast alles versucht und nichts hat funktioniert.
Erst als ich die referenzierten DLLs im Standardprojekt
EntityFramework
und in denEntityFramework.SqlServer
Eigenschaften so eingestellt habeCopy Local
,True
dass es funktioniert!quelle
Ich brauche Ihre Aufmerksamkeit. Achtung, dass zwei DLLs EntityFramework.dll und EntityFramework.SqlServer.dll DataAccess-Ebenenbibliothek sind. Es ist nicht logisch, sie in der Ansicht oder einer anderen Ebene zu verwenden. Es löst Ihr Problem, aber es ist nicht logisch.
Der logische Weg ist, dass das enitiess-Attribut sie entfernt und durch Fluent API ersetzt. Dies ist eine echte Lösung
quelle
Ich hatte eine Konsolenanwendung und eine Klassenbibliothek. In der Klassenbibliothek habe ich ein Entitätsdatenmodell erstellt (Rechtsklick auf Klassenbibliothek> Hinzufügen> Neues Element> Daten> ADO.NET-Entitätsdatenmodell 6.0) und eine Referenz in die Konsolenanwendung eingefügt. Sie haben also eine Konsolenanwendung, die auf die Klassenbibliothek verweist, und innerhalb der Klassenbibliothek haben Sie ein EF-Modell. Ich hatte den gleichen Fehler, als ich versuchte, einige Datensätze aus der Tabelle zu erhalten.
Ich habe dieses Problem folgendermaßen behoben:
Das war alles was ich tun musste und alles hat perfekt funktioniert.
Ich hoffe es hat geholfen.
quelle
Ich habe den gleichen Fehler. Es ist seltsam, dass es nur passiert, wenn ich meinen dbContext verwendet habe, um nach einem meiner Modelle abzufragen oder seine Liste wie folgt abzurufen:
Wir haben versucht, das Entity Framework neu zu installieren, es richtig zu referenzieren, aber ohne Erfolg.
Glücklicherweise haben wir versucht, das Nuget auf
ALL
Lösungen zu überprüfen , dann alles zu aktualisieren oder sicherzustellen, dasseverything
es dieselbe Version ist, da wir festgestellt haben, dass die beiden Projekte unterschiedliche EF-Versionen im Webprojekt haben. Und es funktioniert. Der Fehler ist weg.Hier ist der Screenshot zum Verwalten von Nuget für alle Lösungen:
quelle
Sie vermissen nur einen Verweis auf EntityFramework.SqlServer.dll. Bei EntityFramework-Projekten mit SQL Server müssen Sie auf die beiden Dateien EntityFramework.SqlServer.dll und EntityFramework.dll verweisen
quelle
Ich hatte ein verwandtes Problem bei der Migration von einer CE-Datenbank auf SQL Server unter Azure. Ich habe gerade 4 Stunden damit verbracht, dies zu lösen. Hoffentlich kann dies jemandem ein ähnliches Schicksal ersparen. Für mich hatte ich einen Verweis auf SqlCE in meiner Datei packages.config. Durch das Entfernen wurde mein gesamtes Problem behoben und ich konnte Migrationen verwenden. Yay Microsoft für eine andere Technologie mit unnötig komplexen Setup- und Konfigurationsproblemen.
quelle
Ich hatte das gleiche Problem, habe nur die App Config-Datei aus dem Projekt, das den DBContext enthielt, in mein Testprojekt kopiert
quelle
Ich hatte die identische Ausnahme geworfen. Ich habe eingeschlossen
und alles funktioniert wieder ..
quelle
Wie die Nachricht zeigt, müssen wir den Anbieter System.Data.SqlClient hinzufügen. Deshalb müssen wir das Nuget-Paket von EntityFramework mit zwei DLLs installieren. Wenn wir jedoch nur eine Konsolenanwendung entwickeln, müssen wir nur die Referenz von EntityFramework.SqlServer.dll hinzufügen
quelle