7

Noticed diese seltsame Sache los, vielleicht ist es ein Fehler, aber ich könnte etwas selbst verpassen.EntityFramework.SqlServer nicht im Web veröffentlicht

Angenommen, Sie haben eine Lösung mit zwei Projekten: eines ist ein MVC3-Projekt, ein anderes ist eine Klassenbibliothek für den Datenzugriff (Entity Framework-Modellklassen, Datenkontext usw.). Die Klassenbibliothek verweist auf die Bibliotheken EntityFramework (EF6) und EntityFramework.SqlServer.

Und das MVC-Projekt verweist auf diese Klassenbibliothek DAL. Die DAL-Bibliothek kann von anderem Code außerhalb der Anwendung verwendet werden, um sie daher vom Webprojekt zu entkoppeln.

Auf jeden Fall scheint es, dass das MVC3 Projekt auf der Veröffentlichung, der Prozess Misses Kopieren die EntityFramework.SqlServer Montage auf den Publish/sind. Jedoch tut veröffentlichen Basis EntityFramework DLL zusammen mit anderen Bibliotheken und der Klassenbibliothek selbst.

Gibt es eine Möglichkeit, den Publisher dazu zu bringen, den erforderlichen SqlServer-Treiber ebenfalls zu veröffentlichen?

Antwort

16

In Ordnung, nach einigen zusätzlichen Google-Fu scheint es, dass eine Problemumgehung ist, einen Verweis auf diese fehlende Assembly zu erstellen, auch wenn der Code nicht verwendet wird.

.NET MVC 3 Deployment package missing references

Und die Abhilfe, die ich verwenden einfache Testlinie im Konstruktor des Datenkontextes hinzufügen:

bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null; 
+1

Wollen Sie in der Content.tt-Datei? Wird das nicht überschrieben, wenn Sie eine Änderung vornehmen? – RichC

+1

Ich bin mir nicht sicher, warum das passiert, aber ich habe gerade eine interne Klasse erstellt und diese Anweisung in den Konstruktor eingefügt und das Problem behoben. – Lereveme

+0

@RichC, nein das hängt nicht mit TTs zusammen. Ich sollte hinzufügen, dass dies ein Fix zu Code-First nur – Crypton

3

ich die gleiche Situation hatte. Ich habe EF über NuGet in meinem Webprojekt installiert (ich benutze es dort immer noch nicht, nur auf Bibliotheken bezogen) und es löst mein Problem.

Darüber hinaus kann ich diese Situation für andere Lösung nicht reproduzieren - ich erstellte neues Webprojekt und referenzierte neue lib - aber die Bereitstellung funktioniert.

1

Add Entity Framework-Paket in Ihrer Paketdatei Ihres Projektes