在EF Core中的運行時創建表

entity-framework-core

我知道我可以使用以下命令添加新的遷移並創建數據庫:

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

但我需要在運行時創建我的數據庫/表。

首先,我嘗試通過覆蓋OnModelCreating來做到這一點,但我失敗了。它返回給我一個錯誤,指出表尚未創建

這是我的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; }


    }

任何想法 ?

一般承認的答案

如果您需要創建模型表,如果在您的數據庫中還有其他表可以使用

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

熱門答案

取而代之的DbContext.Database.Migrate()我應該使用DbContext.Database.EnsureCreated()方法。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因