Entity Framewok Code Erster "ADO.NET-Provider nicht gefunden" mit lokalen SQL Server CE-DLLs

8

Ich schreibe eine C # -Anwendung, die SQL Server CE 4.0-Dateien verwendet, auf die über das Entity Framework 6.0 per Code-First zugegriffen wird. (Die Anwendung muss lokale DLLs für die SQL Server CE-Verbindung verwenden können, d. H. Die Anwendung muss XCOPY-deploybar sein). Die Anwendung läuft auf meinem Entwicklungscomputer einwandfrei, aber auf anderen Computern (z. B. VMs mit nur Win7 und .NET 4.0) erhalte ich ArgumentException :

  

Der ADO.NET-Provider mit dem invarianten Namen 'System.Data.SqlServerCe.4.0' ist entweder nicht in der Computer- oder Anwendungskonfigurationsdatei registriert oder konnte nicht geladen werden. Siehe die innere Ausnahme für Details.

Die innere Ausnahmemeldung sagt:

  

Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert.

Ich habe Google und SO durchsucht und die meisten Kommentare zeigen an, dass die App.config-Datei korrekt ist. Ich glaube, das ist meine (Standard-Verbindung Fabrik und Anbieter Abschnitte), aber hier sind die Inhalte:

%Vor%

Der Build-Ordner enthält die folgenden Dateien (zusätzlich zu den anwendungsspezifischen Dateien natürlich):

  • EntityFramework.dll
  • EntityFramework.xml
  • EntityFramework.SqlServer.dll
  • EntityFramework.SqlServer.xml
  • EntityFramework.SqlServerCompact.dll
  • EntityFramework.SqlServerCompact.xml

In jedem der Unterordner amd64 und x86 befinden sich die folgenden Dateien:

  • sqlceca40.dll
  • sqlcecompact40.dll
  • sqlceer40DE.dll
  • sqlceme40.dll
  • sqlceqp40.dll
  • sqlcese40.dll

Ich bin sicher, dass das Programm auf dem Entwicklungscomputer ausgeführt wird, weil SQL Server CE installiert wurde, aber wie kann ich es mit nur lokalen SQL Server CE-DLLs auf anderen Computern ausführen?

    
Tim 13.12.2013, 20:38
quelle

4 Antworten

20

Siehe Ссылка

Es scheint, dass die relevanten Bits, die Ihnen fehlen könnten, sind:

  • Stellen Sie sicher, dass System.Data.SqlServerCe referenziert und auf "Copy" gesetzt ist lokale "in Eigenschaften.

  • Fügen Sie Folgendes zu app.config hinzu:

%Vor%     
nekno 13.12.2013, 21:05
quelle
4

Ich hatte heute dasselbe Problem.
Nach der mehrmaligen Neuinstallation von EF löste sich mein Problem dadurch, dass ich in meinem Konsolenprojekt auf EF verwiesen habe, zusammen mit dem DAL-Projekt (das EF tatsächlich verwendet).

Wenn Sie eine Referenz verwenden, die wiederum auf EF verweist, müssen Sie sie ebenfalls zu diesem Projekt hinzufügen.

    
Tico 13.12.2013 21:51
quelle
2

Tut mir leid wegen der späten Antwort - eigentlich gibt es eine wirklich einfache Lösung:

Wenn Sie den Ordner packages \ EntityFramework.6.1.3 \ lib \ net45 untersuchen, werden Sie feststellen, dass sich bereits eine andere DLL in - EntityFramework.SqlServer befindet.

Fügen Sie einfach einen Verweis hinzu, und alles wird funktionieren.

    
Sahil Talwar 19.06.2015 17:19
quelle
0

Ich hatte das gleiche Problem und nichts hat für mich funktioniert. Das einzige Problem, das mein Problem für mich gelöst hat, war die Deinstallation von SQL Server Compact von meinem Computer (über Programme hinzufügen / entfernen) und die Neuinstallation.

    
dmathisen 09.02.2015 21:59
quelle