Konfigurieren ProviderManifestToken für EF Code First
Habe ich eine asp.net MVC3-Projekt mit EF code-first. Für meine unit-Tests habe ich mit SQL Server CE 4.0 und SQL Server 2008 Express. Beide haben gearbeitet perfekt mit EF Erzeugung von meiner Datenbank, wie erwartet.
Jedoch, wenn ich meine Anwendung außerhalb der unit test und zeigen Sie es an meiner Verbindung strings bekomme ich die Fehlermeldung
ProviderIncompatibleException: Der Anbieter kam nicht wieder einen ProviderManifestToken string
Habe ich gelesen, das MS-Dokumentation auf dies und es scheint, dies ist eine SqlVersion
- token, das das EF-Modell generiert. Das problem ist, dass ich mit den code-first-Ansatz, also habe ich keine .edmx
Datei noch weiß ich wo ich meinen Metadaten zu, weil die db noch nicht generiert worden noch.
Ich weiß, dass meine Verbindung Saiten so weit wie db-name, Benutzername und pass sind korrekt, weil Sie Sie ändern, um falsche Werte wirft die zu erwartende Fehler. Nicht sicher, wo zu beginnen.
Dank.
Hier ist mein connection string:
<connectionStrings>
<add
name="SqlConnection"
providerName="System.Data.SqlClient"
connectionString="Data Source=WORKSTATION\SQLEXPRESS;Initial Catalog=CodeFirst;Integrated Security=False;
Persist Security Info=False;User ID=CodeFirst_user;Password=password1;Connect Timeout=120;MultipleActiveResultSets=True;"/>
</connectionStrings>
InformationsquelleAutor der Frage trevorc | 2011-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit EF 6 (nur freigegeben) Sie haben eine alternative.
Auflösung Von Abhängigkeiten
Können Sie mit der neuen Auflösung von Abhängigkeiten Funktion registriert eine Implementierung von
IManifestTokenResolver
(beschrieben in diese Vorschau auf die Dokumentation alsIManifestTokenService
).Dieser Artikel gibt etwas mehr Informationen zur Verwendung
DbConfiguration
. Der einfachste Weg, es zu benutzen ist wie folgt:Diesem Beispiel vermeidet eine Reise, um die Datenbank beim erstellen der Metadaten für SQL Server-verbindungen und automatisch gibt der SQL Server 2005-Kompatibilität.
InformationsquelleAutor der Antwort Olly
Nach Stunden des Suchens & hantieren, fand ich einen Weg, es zu tun. Stellt sich heraus, das
DbModelBuilder
Klasse einenDbProviderInfo
in seinerBuild
Methode, so dass ich verwenden, anstatt sich auf EF zu nennenOnModelCreated
:Natürlich braucht dies einige Reorganisation (z.B. die kompilierte cache-Modell, so dass Sie nicht brauchen, um neu zu bauen, ist es jedes mal, wenn ein Kontext geschaffen wird).
Für mich ist das komplett das problem gelöst. Genießen Sie!
InformationsquelleAutor der Antwort sinelaw
Ich hatte gerade genau dieses problem, aber ich verfolgte es bis zu meinem SQL Server-Dienst nicht ausgeführt wird. Ich hatte gerade meinen Rechner neu gestartet und in der Regel beginnt auf seine eigene, aber nicht für einige Grund.
InformationsquelleAutor der Antwort Bruce Hubbard
In meinem Fall, mein connection string name muss mit dem Kontext der Klasse name.
Connection String:
Kontext-Klasse:
InformationsquelleAutor der Antwort asakura89
Fand ich, wenn ich ausdrücklich "User Id=abcUser; Password=somePwd;" in meinem connection-string ich in der Lage bin zu lösen, die gleichen Fehler. Früher wurde ich mit "Trusted_Connection=true;", was mir erlaubt zu Debuggen mein web-Projekt, sondern begann damit mir Fehler - {"Die Anbieter haben nicht wieder einen ProviderManifestToken string."} sobald ich Hinzugefügt die Windows azure-Projekt und versucht das Debuggen des Azure-Projekt nach dem hinzufügen von meinem web-Projekt als web-Rolle unter.
Hoffe, es hilft einigen ein erleben einer ähnlichen situation.
Dank,
Vivek Bahl
InformationsquelleAutor der Antwort Vivek Bahl
Wechsel zu Data Source=localhost war für mich auch mit MS SQL 2008 R2 Express
InformationsquelleAutor der Antwort John
Ändern der Datenquelle zu
localhost
imconnectionString
mein problem gelöst.InformationsquelleAutor der Antwort Bala
Ich hatte dieses problem bei der Arbeit über die MVC3-tutorial auf ASP.NET.
Meine Lösung war die Verwendung
(localhost)
statt eine benannte Datenquelle. Dies funktioniert gut auf meiner box, die für die lokale dev Arbeit, aber würde nicht helfen, wenn die Datenbank auf einem separaten server.InformationsquelleAutor der Antwort Cameron Combs
Es hat sich gezeigt, hilfreich für mich:
InformationsquelleAutor der Antwort andrew