Ich versuche, ein auf MSDN gefundenes Beispiel zu replizieren. Ich verwende ASP.NET und EF 4.1 (CTP?). Ich habe NuGet verwendet, um das EntityFramework-Paket zu installieren.
Ich erhalte die folgende Fehlermeldung: The provider did not return a ProviderManifestToken string
... und die Datenbank wird nie erstellt.
Hier ist meine Verbindungszeichenfolge:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
Hier ist mein Code:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
Hier ist mein Kontext:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
Dies ist ein vollständig gepatchtes SQL 2008-System mit VS 2010 SP1.
SqlServerCe.Entity.dll
Antworten:
Ich habe diesen Fehler erhalten und einige der früheren Vorschläge ausprobiert. Dann überprüfte ich die innere Ausnahme und bemerkte, dass ich einen einfachen SQL-Anmeldefehler für den Benutzer bekam. Nur noch etwas zu überprüfen.
quelle
Dies kann manchmal vorkommen, wenn Sie die Verbindungszeichenfolge in der app.config des falschen Projekts in Visual Studio platzieren.
Ich habe dieses Problem beispielsweise im EF 4.1-Projekt (der veröffentlichten Version) + im WCF-Datendienstprojekt festgestellt und festgestellt, dass im Datendienstprojekt, in dem es verwendet wurde, keine Verbindungszeichenfolge angegeben wurde.
quelle
Ich hatte den gleichen Fehler und tatsächlich war die Anmeldung für den angegebenen Server fehlgeschlagen. Ich habe das Attribut "Integrierte Sicherheit" aus der Konfigurationsverbindungszeichenfolge entfernt und es hat funktioniert.
quelle
Ich hatte das gleiche Problem und füge den folgenden Code direkt nach der Instanz meines Kontexts hinzu (Beispiel: Onload)
quelle
Ich hatte ein ähnliches Problem mit der MvcMusicStore-App. Ich habe eine Zeile in der Web.config von "Instance = true" in "Instance = false" geändert. Es funktioniert manchmal ohne diese Optimierung, aber ich weiß nicht, was den Unterschied verursacht. Das Lesen dieser http://msdn.microsoft.com/en-us/library/ms254504.aspx hat nicht wirklich geholfen.
quelle
Aus bestimmten Gründen kann EF keine Datenbankverbindung herstellen. Ich hatte den ganzen Tag das gleiche Problem. Schließlich hatte ich folgende Lösung ausprobiert und es funktionierte: a / IIS öffnen (ich verwende IIS 7) b / Erweiterte Einstellungen von Appool öffnen, welche Website verwendet wurde (Beispiel: DefaultAppPool) c / Prozessmodellgruppe anzeigen, Identitätswert ändern zu "Localsystem"
Hoffe es funktioniert mit dir.
quelle
Ich hatte nur das gleiche Problem ...
die Lösung, die für mich funktioniert hat, war:
Führen Sie das Client-Netzwerkkonfigurationstool aus (geben Sie cliconfg in Run ein)
und stellen Sie sicher, dass TCP / IP aktiviert ist.
quelle
Ich habe es endlich geknackt - nach einer leichten Verfolgungsjagd mit wilden Gänsen, die dachte, es liege an Berechtigungen.
Offenbarung: BENUTZEN SIE SQL PROFILER
(Hinweis: Ich habe kürzlich ein Downgrade von EF6 auf EF5 durchgeführt.)
Mit SQL Profiler fand ich schnell das letzte SQL, das vor dem gemeldeten Fehler ausgeführt wurde:
Schauen Sie sich das an - etwas, das mit Migrationen zu tun hat. Es schaut hinein
__MigrationHistory
Tabelle aus - was ich nicht einmal bemerkt hatte, dass es erstellt wurde (ich hatte bereits Migrationen in meinem CSPROJ ausgelöscht) und das gelöscht hat.Also rufe ich die Zeilen für diese Tabelle auf und sehe, dass sie an eine bestimmte Produktversion (v6) gebunden ist.
Ich habe tatsächlich ein Downgrade von EF6 (das ich ursprünglich nicht installieren wollte) auf EF5 (das besser mit Gerüsten kompatibel ist) herabgestuft, und das, als die Probleme begannen.
Ich vermute, dass die
Model (<Binary data>)
Spalte nicht abwärtskompatibel ist - daher derThe provider did not return a ProviderManifest instance
Fehler, da sie nicht dekodiert werden konnte.Ich hatte nichts zu verlieren und löschte diesen Tisch komplett aus und rannte los
Update-Database -Verbose
und war dann wieder am Laufen.Wenn Sie sich in einer fortgeschrittenen Umgebung befinden oder bereits in der Produktion sind, ist das Löschen dieser Tabelle möglicherweise nicht die Lösung, aber auf diese Weise konnte ich sofort wieder arbeiten.
quelle
Add-Migration
und das Gerüst neu aufgebautUpdate-Database -Verbose -Force
. Hier ist eine Befehlsreferenz encoding.abel.nu/2012/03/ef-migrations-command-referenceBei der Verwendung von Visual Studio 11 Beta mit EF4.1 und ASP.NET MVC habe ich mir fast die Haare ausgezogen, bis ich gefunden habe
Um mein Problem zu beheben, habe ich Application_Start aufgerufen und geändert
zu
quelle
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
wurde zu meinemMain
mehod hinzugefügt , jetzt funktioniert es wie ein Zauber! Vielen Dank.Dieses Zitat von CodePlex hat bei mir funktioniert (Visual Studio 2013 / MVC 5)
quelle
Eine andere Sache, die Sie berücksichtigen sollten, wenn Sie EF Code First verwenden, ist, dass die Sicherungsdatenbank manchmal nicht automatisch für Ihre DbContext-Klasse erstellt wird. Die Lösung besteht darin, eine eigene Verbindungszeichenfolge hinzuzufügen. Sie können die möglicherweise vorhandene Verbindungszeichenfolge verwenden, um die Benutzer- / Registrierungsdatenbank, die den Simple Membership Provider unterstützt, als Vorlage zu verarbeiten. Schließlich müssen Sie einen Standardkonstruktor für die von Ihnen erstellte DbContext-Klasse hinzufügen:
Hier wird der Name der Verbindungszeichenfolge, die Sie in Ihre Datei web.config eingegeben haben, verwendet, um den DbContext zum Erstellen der Datenbank anzuweisen. Sehr gelegentlich musste ich die Datenbank manuell erstellen (in SQL Server Management Studio), wodurch sie zum Funktionieren aufgefordert wurde.
quelle
Ich habe mehrere Projekte in einer Lösung und habe jedem Projekt zu unterschiedlichen Zeiten EF hinzugefügt. Auf einigen Maschinen funktionierte es und auf einigen schlug es mit dem oben genannten Fehler fehl. Es dauerte eine Weile, bis ich bemerkte, dass einige der app.config meines Projekts Folgendes hatten:
Dies ist in Ordnung, wenn Sie LocalDb verwenden (neues "SQL Express" -ähnliches), aber völlig falsch, wenn Sie diesen bestimmten Server nicht installiert haben und ein reguläres SQL verwenden.
Lösung: Entfernen Sie den obigen Code.
quelle
Dies liegt daran, dass die Verbindung zum SQL Server fehlgeschlagen ist.
Stellen Sie sicher, dass das Benutzerkonto, unter dem Sie den Prozess ausführen, Zugriff auf SQL Server hat.
Wenn Sie den DbContext aus dem übergeordneten Thread generiert haben (z. B. mithilfe der Abhängigkeitsinjektion) und sich dann als ein anderer Benutzer ausgeben, tritt dieser Fehler auf. Die Lösung wäre, den DbContext innerhalb des neuen Threads oder des neuen Identitätswechselkontexts zu generieren.
quelle
Ich habe gerade alle Instanzen von Visual Studio geschlossen und meine Lösung erneut geöffnet.
Ich weiß nicht, was wirklich passiert ist, aber ich habe dieselbe Lösung aus zwei verschiedenen lokalen Arbeitsbereichen geöffnet (einer mit meinen lokalen Änderungen, einer mit dem unveränderten Repository-Quellcode). Ich arbeite mit einer Postgres-Datenbank, Entity Framework 6, Visual Studio 2013 und ASP.NET MVC 5.
quelle
Ich hatte einen Fehler beim Entity Framework, aber keine der oben genannten Antworten passte in die Lösung, die schließlich funktionierte.
Mein EntityFramework-Code Erste Modelle und DataContext befanden sich in einem von meinem WebAPI-Hauptprojekt getrennten Projekt. Mein Entity Framework-Projekt wurde irgendwo in der Codierungszeile als Startprojekt festgelegt. Daher wurde beim Ausführen einer Migration das Verbindungsproblem "Der Anbieter hat keine ProviderManifestToken-Zeichenfolge zurückgegeben" angezeigt.
Es stellt sich heraus, dass die Verbindungszeichenfolge nicht abgerufen wurde, da sich der ConnectionString zur Datenbank in der Datei Web.config im WebAPI-Hauptprojekt befindet. Durch Festlegen des WebAPI-Projekts als mein Startprojekt konnte ich erfolgreich eine Verbindung herstellen.
quelle