【问题标题】:Entity Framework Core Code First Update-Database does nothingEntity Framework Core Code First Update-Database 什么都不做
【发布时间】:2017-05-28 10:46:37
【问题描述】:

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

谢谢!

【问题讨论】:

  • 我没有使用 EF-core,但对于标准 EF,我使用“update-database -project -startupproject -connectionstringname ”。 app/web.config 中可以有多个连接字符串。
  • 数据库是否已经存在?如果 Update-Database 找不到连接字符串,则会抛出错误。只有在数据库已经存在并且没有什么要更新的情况下,它才会是无操作的。

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


【解决方案1】:

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

$env:ASPNETCORE_ENVIRONMENT='Debug'

然后运行:

Update-Database

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多