Ich verwende EF 6.1
und habe den Code für die erste Migration in meinem Projekt durch aktiviert
Enable-Migrations
Add-Migration InitializeDb -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script
Wenn ich meine ConnectionString
spezifiziere, funktionieren ConnectionProviderName
explizit mit Add-Migration
und Update-database
in der Paketmanagerkonsoleit funktionieren korrekt:
Add-migration updateXtable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
wenn ich jedoch Add-Migration
ohne zusätzliche Informationen verwende:
add-migration updateXtable
Ich erhalte folgende Fehlermeldung:
Es kann keine explizite Migration generiert werden, da die folgenden expliziten Migrationen ausstehen: [201408300955376_InitializeDb, 201408311028404_Test]. Wenden Sie die ausstehenden expliziten Migrationen an, bevor Sie versuchen, eine neue explizite Migration zu generieren.
Daher muss ich jedes Mal, wenn ich meine Datenbank aktualisieren muss, den folgenden Befehl verwenden:
Add-Migration UpdateXTable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script
Es ist mein Projekt (das meine DbContext
enthält) app.config
-Datei:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="ERPContext" connectionString="Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
Weiß jemand, wo das Problem liegt?
Endlich habe ich das Problem gefunden! Wie Mohamad Bataineh sagte in dieser Thread (siehe die Antworten)
In Ihrer DbContext-Klasse müssen Sie den Basisklassenkonstruktor mit dem richtigen Namen für Ihre SQL-Quelle angeben. Zum Beispiel name = MyDBEntities
Im anderen Wort habe ich den Konstruktor meines bestehenden dbcontext geändert
public MyDbContext()
{
}
Zu
public MyDbContext(): base("name=ERPContext")
{
}
Um dieses Problem zu beheben, habe ich mein Standardprojekt in ein Projekt mit dem app.config
geändert, der die richtige Verbindungszeichenfolge enthält.
Dies hätte offensichtlich sein müssen, da das System none der angewendeten Migrationen erkannt hat - ein naheliegendes Zeichen, dass der DB nicht gefunden wurde. Ein offensichtlicher Grund dafür ist, dass die Verbindungszeichenfolge (als OP abgeschlossen).
"Rückblick ist 20/20".
Ich habe auch diesen Fehler erhalten. Neben dem korrekten Festlegen des Standardprojekts (wie von ANeves erwähnt) musste ich das Projekt auch mit der Verbindungszeichenfolge als Startprojekt im Projektmappen-Explorer festlegen. Erst wenn ich beide richtig eingestellt habe, ist der Fehler verschwunden.
Ich konnte die Nachricht loswerden, indem ich die entsprechende Migration in meinem Migrationsordner (im Solutions Explorer) löschte, die neue Migration hinzufügte und schließlich die Datenbank aktualisiert.
Löschen Sie einfach die Migration aus dem Migrationsordner, der Fehler anzeigt und die Datenbank nicht aktualisiert. Dann wieder Migration hinzufügen. Es wird klappen.
In meinem Fall wurde die IP-Adresse meiner Workstation nicht zu den Firewall-Ausnahmen des SQL Servers hinzugefügt.