实体框架核心代码第一次更新 - 数据库什么都不做

时间:2017-05-28 10:46:37

标签: entity-framework entity-framework-core ef-migrations

我试图将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我的连接字符串在哪里的方法。我知道你可以将一个参数传递给它,但我已经看到人们在没有参数的情况下使用它。我怎样才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能需要先使用 VS 包管理器和以下命令设置 ASPNETCORE_ENVIRONMENT 变量:

$env:ASPNETCORE_ENVIRONMENT='Debug'

然后运行:

Update-Database

如果在 appsettings.debug.json 中配置了连接字符串,那么它应该使用您的迁移创建和初始化数据库。