Verbindung mit SQL Server mit EF6

8

Bis zu EF5, um eine Verbindung zu SQL Server 2012 herzustellen, muss ich lediglich eine Verbindungszeichenfolge angeben, die ungefähr so ​​aussieht:

%Vor%

Diese Methode funktioniert nicht mit EF6 und gibt Ausnahme

  

Kein Entity Framework-Anbieter für den ADO.NET-Provider 'System.Data.Odbc' gefunden. Stellen Sie sicher, dass der Anbieter im Abschnitt 'entityFramework' der Anwendungskonfigurationsdatei registriert ist

Ich benutze app.config file überhaupt nicht, ich übergebe die obige Verbindungszeichenfolge an den MyContext-Konstruktor. WARUM versucht es, Odbc-Provider überhaupt zu verwenden und stattdessen System.Data.SqlClient nicht zu verwenden?

Was muss getan werden, um eine Verbindung mit SQL Server mit EF6-Code zuerst herzustellen? Ich stellte sicher, dass EntityFramework.dll und EntityFramework.SqlServer.dll beide im Anwendungsordner verfügbar sind. Ich habe sogar das EF6 nugget-Paket v6.0.0.1 im WPF-Projekt hinzugefügt, obwohl es die EF-Bibliothek nicht direkt verwendet und dafür sorgt, dass die automatisch erstellte App.Config-Datei (durch nuget) in den Ordner Anwendung (Debug) kopiert wird - immer noch nicht Erfolg.

Ich habe auch versucht, den Anbieter manuell im Code einzustellen:

%Vor%

Immer noch kein Erfolg. Meine Projektstruktur ist wie folgt (vereinfacht):

WPF-Projekt - hat keinen Verweis auf EF (auch versucht, eine EF-Referenz hinzuzufügen)

ViewModel-Klassenbibliothek - hat keinen Verweis auf EF

Modellklassenbibliothek - verweist auf EF-Bibliothek (beide DLLs)

Datenklassenbibliothek - verweist auf die UI-Bibliothek (beide DLLs).

Ich verwende den CodeFirst-Ansatz, und dieses Setup funktioniert problemlos mit EF5. Jede Hilfe wird sehr geschätzt.

    
Goran 06.04.2013, 23:59
quelle

4 Antworten

7

Für mich wurde dieser Fehler durch Entfernen des Glimpse.ADO-Pakets behoben

Bearbeiten 20. Dezember 2013 Ich glaube, das Glimpse.ADO-Paket unterstützt nun EF6, aber ich habe es nicht getestet.

    
taylonr 08.07.2013, 21:33
quelle
5

Ich hatte das gleiche Problem, und ich versuchte schließlich das Folgende und es funktionierte (Glimpse EF5 & Glimpse ADO-Pakete halten)

In der Datei "web.config" habe ich eine Kopie der vorhandenen Provider-Zeile hinzugefügt, aber den invarianten Namen in "System.Data.Odbc" geändert.

%Vor%

Ich hoffe, dass das hilft.

Jonathan

    
Jonathan Stanton 23.01.2014 12:43
quelle
2

Ja, für mich wurde es gelöst, indem Glimpse.ADO und Glimpse.EF5 nugget Pakete entfernt wurden. Danke.

    
Marek Suscak 28.10.2013 14:13
quelle
1

Option 1: Fügen Sie in app.config des ausführbaren Projekts Folgendes hinzu:

%Vor%

Option 2: Wenn Sie die code-basierte Providerregistrierung verwenden möchten, befolgen Sie die Richtlinie zu Entity Framework-Providern für EF6

  • Stellen Sie sicher, dass Sie die DbConfiguration in derselben Assembly haben wie der DbContext Ihrer Anwendung.
jd4u 30.10.2013 10:23
quelle