So che posso usare il seguente comando per aggiungere una nuova migrazione e creare il database:
dotnet ef migrations add MigrationName -c DbContextName
dotnet ef database update -c DbContextName
ma ho bisogno di creare il mio database / tabelle su runtime.
Per prima cosa ho provato a farlo sovrascrivendo OnModelCreating ma non ci sono riuscito. Mi è tornato un errore sottolineando che le tabelle non sono state create
Ecco la mia classe dbcontext
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; }
}
Qualche idea ?
Se hai bisogno di creare tabelle modello anche se nel tuo DB ci sono altre tabelle che puoi usare
RelationalDatabaseCreator databaseCreator =
(RelationalDatabaseCreator) context.Database.GetService<IDatabaseCreator>();
databaseCreator.CreateTables();
Invece di DbContext.Database.Migrate()
dovrei usare il metodo DbContext.Database.EnsureCreated()
.