entity-framework-core - 在 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();

关于entity-framework-core - 在 EF Core 运行时创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38532764/

相关文章:

c# - 包括导致 InvalidCastException

c# - 无法在 Windows 11 上安装 dotnet-ef 工具

asp.net-core - 具有独立数据库的 ASP.NET Core

entity-framework - 为什么我的 EF Core 迁移会忽略模型的 OnDelete 设置?

c# - ASP.NET Core Entity Framework Core 找不到 IndexAttribute

c# - 在 Entity Framework Core 中使用两列的一对多关系

c# - 如何使用 InMemory 数据库检查在单元测试中正确添加的记录

c# - 简化 Entity Framework Core 查询

c# - 使用连接字符串 Entity Framework 在运行时生成 DbContext 和模型

c# - 当远程 SQL Server 数据库的 scaffold-DbContext 时,构建失败