我试图将Entity Framework Core与Code First方法结合使用。
到目前为止,我已经开发了一些模型和我的上下文。然后我添加了EntityFrameworkCore.Tools来处理迁移。我在appsettings中定义了我的ConnectionString属性,如下所示:
"Data": {
"ConnectionString": "Data Source=localhost;Initial Catalog=TestDb;User Id=user;Password=pass; Pooling=true; Max Pool Size=200; Min Pool Size=5"
}
(用户和密码正确无误)
在我的DbContext中,我完成了以下操作:
public MyContext()
{
Database.EnsureCreated();
}
// ...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connString = Startup.Configuration["Data:ConnectionString"];
optionsBuilder.UseSqlServer(connString);
base.OnConfiguring(optionsBuilder);
}
当我运行Add-Migration InitialDatabase
它工作正常时,它会创建我的表及其迁移。然后当我启动应用程序时,由于Database.EnsureCreated()
中的MyContext
,它为我创建了数据库并且工作正常。
问题我想控制我的迁移。所以我不想依赖EnsureCreated
。问题是,当我执行Update-Database
时,命令显然有效(它没有显示任何错误),但它不会创建我的数据库。我想我错过了告诉Update-Database
我的连接字符串在哪里的方法。我知道你可以将一个参数传递给它,但我已经看到人们在没有参数的情况下使用它。我怎样才能做到这一点?
谢谢!
答案 0 :(得分:0)
您可能需要先使用 VS 包管理器和以下命令设置 ASPNETCORE_ENVIRONMENT 变量:
$env:ASPNETCORE_ENVIRONMENT='Debug'
然后运行:
Update-Database
如果在 appsettings.debug.json 中配置了连接字符串,那么它应该使用您的迁移创建和初始化数据库。