Sé que puedo usar el siguiente comando para agregar una nueva migración y crear la base de datos:
dotnet ef migrations add MigrationName -c DbContextName
dotnet ef database update -c DbContextName
pero necesito crear mi base de datos / tablas en tiempo de ejecución.
Primero traté de hacer eso anulando OnModelCreating pero fallé. Me devolvió un error señalando que las tablas no se han creado.
Aquí está mi clase 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; }
}
Alguna idea ?
Si necesita crear sus tablas modelo también si en su base de datos hay otras tablas que puede usar
RelationalDatabaseCreator databaseCreator =
(RelationalDatabaseCreator) context.Database.GetService<IDatabaseCreator>();
databaseCreator.CreateTables();
En lugar de DbContext.Database.Migrate()
debería usar el método DbContext.Database.EnsureCreated()
.