Ich weiß, dass ich den folgenden Befehl verwenden kann, um eine neue Migration hinzuzufügen und die Datenbank zu erstellen:
dotnet ef migrations add MigrationName -c DbContextName
dotnet ef database update -c DbContextName
aber ich muss meine Datenbank / Tabellen zur Laufzeit erstellen.
Zuerst versuchte ich dies, indem ich OnModelCreating überschrieb, aber ich scheiterte. Es hat mir einen Fehler zurückgegeben, der darauf hinweist, dass die Tabellen nicht erstellt wurden
Hier 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; }
}
Irgendeine Idee ?
Wenn Sie Modelltabellen erstellen müssen, können Sie auch in Ihrer DB einige andere Tabellen verwenden
RelationalDatabaseCreator databaseCreator =
(RelationalDatabaseCreator) context.Database.GetService<IDatabaseCreator>();
databaseCreator.CreateTables();
Anstelle von DbContext.Database.Migrate()
sollte ich DbContext.Database.EnsureCreated()
Methode verwenden.