如何从代码 EF Core 创建数据库文件的第一个版本

How to create the first version of database file from code EF Core

我是 EF Core 3.1.22 的新手,在我的 .NET 4.6 桌面应用程序中使用它。我可以使用程序包管理器控制台创建数据库和迁移,但我的代码一开始 运行 不会自行生成数据库文件,当时数据库尚不存在。

如果我从包管理器控制台使用 Update-Database 创建数据库,则会创建文件。

我如何更新此代码以首先从代码生成数据库文件 运行 然后在其上应用 database.migrate

public class MyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>, IMyDbContextFactory
{       
    public MyDbContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
        optionsBuilder.UseSqlite($@"Data Source={DbConfiguration.GetDatabasePath()};", options =>
        {
            options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName);
        });

        return new MyDbContext(optionsBuilder.Options);
    }

    public MyDbContext CreateDbContext()
    {
        var dbcontext=  CreateDbContext(new[] { "" });
        dbcontext.Database.Migrate();
        return dbcontext;
    }
}

您的连接字符串不允许创建数据库,请参阅 SQLite 提供程序 docs

将其更改为 Mode=ReadWriteCreate 或将其完全删除,因为它是默认设置。