web-dev-qa-db-de.com

Es kann keine explizite Migration generiert werden, da die folgenden expliziten Migrationen ausstehen

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?

11
Masoud

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")
{
} 
3
Masoud

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".

22
ANeves

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.

3
jaycer

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.

1
Weapon X

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.

1
Tariqul Shakil

In meinem Fall wurde die IP-Adresse meiner Workstation nicht zu den Firewall-Ausnahmen des SQL Servers hinzugefügt.

0
Thom Hubers