繁体   English   中英

Entity Framework Core Code First Update-Database 什么都不做

[英]Entity Framework Core Code First Update-Database does nothing

我试图将 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它工作正常,它会用它的表创建我的迁移。 然后当我启动应用程序时,由于MyContext中的Database.EnsureCreated()它为我创建了数据库并且它工作正常。

问题是我想控制我的迁移。 所以我想不依赖EnsureCreated 问题是,当我执行Update-Database该命令显然有效(它没有显示任何错误),但它没有创建我的数据库。 我想我缺少一种方法来告诉Update-Database我的连接字符串在哪里。 我知道你可以向它传递一个参数,但我见过有人在没有参数的情况下使用它。 我怎样才能使这项工作?

谢谢!

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

$env:ASPNETCORE_ENVIRONMENT='Debug'

然后运行:

Update-Database

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM