599 Stimmen

Kein Entity Framework-Anbieter wurde für den ADO.NET-Anbieter mit invariantem Namen 'System.Data.SqlClient' gefunden.

Nach dem Herunterladen des EF6 über NuGet und dem Versuch, mein Projekt auszuführen, wird der folgende Fehler zurückgegeben:

Es wurde kein Entity Framework-Anbieter für den ADO.NET-Anbieter mit dem invarianten Namen 'System.Data.SqlClient' gefunden. Stellen Sie sicher, dass der Anbieter im Abschnitt 'entityFramework' der Anwendungs-Konfigurationsdatei registriert ist. Siehe http://go.microsoft.com/fwlink/?LinkId=260882 für weitere Informationen.

Bildbeschreibung hier eingeben

671voto

douglaslps Punkte 7856

Ich bin gerade auf das gleiche Problem gestoßen und es scheint, dass EntityFramework, obwohl es über den NuGet Package Manager installiert wurde, im Projekt nicht korrekt installiert wurde.

Ich konnte es beheben, indem ich den folgenden Befehl in der Paket-Manager-Konsole ausgeführt habe:

PM> Install-Package EntityFramework

411voto

Clément Picou Punkte 4011

Sie haben EF zu einem Klassenbibliotheksprojekt hinzugefügt. Sie müssen es auch zum Projekt hinzufügen, das darauf verweist (Ihre Konsolen-App, Website oder was auch immer).

223voto

Sie müssen Entity Framework nicht in Ihrer Konsolenanwendung installieren, Sie müssen 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:

  • Klassenbibliotheksanwendung:
    • Installieren Sie Entity Framework
    • Schreiben Sie Ihren Codedatenschichtcode
    • Die app.config-Datei enthält alle Konfigurationen, die sich auf Entity Framework beziehen, außer der Verbindungszeichenfolge.
  • Erstellen Sie eine Konsolen-, Web- oder Desktopanwendung:
    • Fügen Sie einen Verweis auf das erste Projekt hinzu.
    • Fügen Sie einen Verweis auf EntityFramework.SqlServer.dll hinzu.
    • Die app.config/web.config enthält die Verbindungszeichenfolge (denken Sie daran, dass der Name des Konfigurationseintrags mit dem Namen der DbContext-Klasse übereinstimmen muss).

116voto

Mike Punkte 1915

Sie sehen diese Nachricht auch, wenn Sie vergessen haben, "EntityFramework.SqlServer.dll" einzuschließen.

Es handelt sich anscheinend um eine neu hinzugefügte Datei in EF6. Zuerst hatte ich sie nicht in mein Merge-Modul aufgenommen und bin auf das hier aufgeführte Problem gestoßen.

61voto

Anders Punkte 17064

Statt EntityFramework.SqlServer zum Host-Projekt hinzuzufügen, können Sie sicherstellen, dass es statisch von Ihrem Model/Entity-Projekt referenziert wird, wie folgt:

static MyContext()
{
    var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
    if(type == null)
        throw new Exception("Nicht entfernen, stellt statische Verweis auf System.Data.Entity.SqlServer sicher");
}

Dadurch wird der Build-Prozess das Assembly mit dem Host-Projekt einschließen.

Weitere Informationen auf meinem Blog http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X