2016-07-22 13 views
3

Ich weiß, dass ich den folgenden Befehl verwenden, um eine neue Migration hinzuzufügen und die Datenbank zu erstellen:Tabellen zur Laufzeit in EF-Core erstellen

dotnet ef migrations add MigrationName -c DbContextName 
dotnet ef database update -c DbContextName 

aber ich brauche, um meine Datenbank/Tabellen zur Laufzeit erstellen.

Zuerst habe ich versucht, OnModelCreating zu überschreiben, aber ich habe es versäumt. Er kehrte mir ein Fehler Hinweis darauf, dass die Tische nicht

Hier erstellt worden ist meine DbContext Klasse

public class AimeLoggerContext : DbContext 
    { 

     public AimeLoggerContext(DbContextOptions<AimeLoggerContext> options) 
      : base(options) 
     { 

      Database.Migrate(); 
     } 

     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
     { 
      base.OnConfiguring(optionsBuilder); 
     } 

     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 

      modelBuilder.Entity("Aime.Logger.Loggers.Database.Model.Log", b => 
      { 
       b.Property<int>("Id") 
        .ValueGeneratedOnAdd(); 
       b.Property<DateTime>("Datetime"); 
       b.HasKey("Id"); 
       b.ToTable("Logs"); 

      }); 

      base.OnModelCreating(modelBuilder); 

     } 

     public DbSet<Log> Logs { get; set; } 


    } 

Jede Idee?

Antwort

3

Wenn Sie Sie Modell Tabellen auch wenn in Ihrem DB erstellen gibt es einige andere Tabellen können Sie

RelationalDatabaseCreator databaseCreator = 
    (RelationalDatabaseCreator) context.Database.GetService<IDatabaseCreator>(); 
databaseCreator.CreateTables(); 
+0

Aus all den verschiedenen Lösungen, die ich online gesehen habe, ist dies die einzige, die für mich funktioniert! Vielen Dank! – OronDF343

3

Anstelle von DbContext.Database.Migrate() sollte ich DbContext.Database.EnsureCreated() Methode verwenden.

+0

Für Abklärungen verwenden: 'EnsureCreated()' ist für Tests usw., wenn Sie immer ein nicht haben -existierende oder leere Datenbank. 'Migrate()' ist für den Produktionsserver, wenn Sie möglicherweise eine vorhandene Datenbank haben und möglicherweise Migrationen durchführen müssen. – MarkusSchaber

Verwandte Themen