如何从代码 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
或将其完全删除,因为它是默认设置。
我是 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
或将其完全删除,因为它是默认设置。