我是 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;
}
}
uj5u.com熱心網友回復:
您的連接字串不允許創建資料庫,請參閱 SQLite 提供程式檔案。
將其更改為Mode=ReadWriteCreate或完全洗掉它,因為它是默認設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/400186.html
標籤:C# 数据库 sqlite 实体框架核心 ef-core-3.1
下一篇:處理bash腳本中的特殊字符
