Ich habe ein seltsames Problem, dass meine Migration vom EF Core 2.0 nicht erkannt wird
Wenn Sie den Befehl Add-Migration
in PM MyFirstMigration
, werden die MyFirstMigration
Klassen im Migrations
.
Kontext:
Protected Overrides Sub OnConfiguring(optionsBuilder As DbContextOptionsBuilder )
optionsBuilder.UseSqlite("Data Source=blogging.db")
End Sub
PM-Code:
PM> Add-Migration MyFirstMigration
To undo this action, use Remove-Migration.
PM> Update-Database
No migrations were applied. The database is already up to date.
Done.
Wenn ich die Dababase-Datei überprüfe, existiert die Tabelle __EFMigrationsHistory , aber nicht die Blog-Tabelle. Wie Sie vielleicht vermuten, löst das Ausführen von db.SaveChanges () eine Ausnahme aus und sagt mir, dass die Tabelle nicht existiert.
Das Ausführen von db.Database.Migrate () tut nichts, aber wenn ich die db-Datei lösche und db.Database.EnsureCreated () ausführe , wird die korrekte Datenbank erstellt.
Ich muss darauf hinweisen, dass die Tabelle __EFMigrationsHistory leer erstellt wird, so dass ich sofort nach der Update-Datenbank die nächste Migration erstellen kann und es genau den gleichen Code erzeugt wie in der ersten.
Ich verwende VS 15.3.5 und .Net 4.6.1 auf WPF.
/ Freundliche Grüße
Liegt es daran, dass Add-Migration
C # -Dateien zu Ihrem VB.NET-Projekt hinzufügt? Sie können sie zu einem separaten C # -Projekt hinzufügen, auf Ihre DbContext
Assembly DbContext
und Ihre OnConfiguring
folgendermaßen hinzufügen.
optionsBuilder.UseSqlite("Data Source=blogging.db", Sub(x) x.MigrationsAssembly("MyCSharpProject"))
Ich hatte dieses Problem, bei dem meine Migrationen keine Entitäten enthielten, dann bemerkte ich etwas, das nicht sehr offensichtlich ist. Die DbContext-Klasse betrachtet ihre eigenen Mitgliedsvariablen und wendet dann alle fließenden / Attributmodelleigenschaften auf die generierte Migration an.
Stellen Sie also sicher, dass Ihr DbContext ungefähr so aussieht:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public virtual DbSet<Blog> Blogs { get; set; }
Denken Sie auch daran, nachdem Sie Änderungen vorgenommen haben, die Sie zum Generieren einer neuen Migration benötigen. Das scheint etwas anders zu funktionieren als früher, wo update-database
(PMC) immer neue Änderungen anwendete.