【问题标题】:EF add-migration generates empty migrationEF add-migration 生成空迁移
【发布时间】:2023-03-09 02:25:01
【问题描述】:

我在我的模型中添加了一个新表:

public DbSet<ReturnedTransactions> ReturnedTransactions { get; set; }

我希望我的迁移为我生成该表,所以我做到了:

PM> Add-migration returnedTransactions

它生成了

public partial class returnedTransactions : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}

我如何强制这个东西为我生成正确的代码?

【问题讨论】:

  • 您的表格中有哪些字段?你能显示你定义表格的类吗?
  • 嗯,这是一个有一堆字段的类,这有什么关系?
  • 你以前编译过项目吗?
  • ReturnedTransactions 可能已经创建,因为它是通过外键从另一个实体引用的。

标签: asp.net asp.net-mvc entity-framework migration


【解决方案1】:

除了上面的答案,对我来说,我必须通过 NuGet 在另一个项目中添加Microsoft.AspNetCore.Identity.EntityFrameworkCore,该项目与包含数据库上下文的项目相连。

【讨论】:

    【解决方案2】:

    这听起来可能很愚蠢,但是您是否安装了所有需要的软件包?我遇到了同样的问题,结果发现缺少一个包,我认为是 Microsoft.AspNetCore 或 Mircosoft.AspNetMVC。

    【讨论】:

      【解决方案3】:

      我刚遇到这个问题,我在 Add-Migration 命令中添加了 -Force,它起作用了。

      【讨论】:

        【解决方案4】:

        当我没有将我的 DBSet 实体添加到与迁移配置文件关联的 DbContext 类时,我看到了这种情况。

        虽然这里可能不是这样,因为我们可以看到提问者包含以下行:

        public DbSet<ReturnedTransactions> ReturnedTransactions { get; set; }
        

        不过,当他们返回一个空的迁移类时,这是应该检查的。

        【讨论】:

          【解决方案5】:

          清除_MigrationHistory 表。

          【讨论】:

          • 我建议不要随意清理__MigrationHistory 表。这将导致 Entity Framework 认为迁移已运行,并且尚未创建表。然后,当 Entity Framework 运行迁移时,它会抛出有关现有表或列的错误。更好的方法是使用Update-Database -Target:0 或类似的命令来删除东西。
          猜你喜欢
          • 1970-01-01
          • 2021-12-29
          • 1970-01-01
          • 2014-12-01
          • 2020-07-14
          • 1970-01-01
          • 2019-05-18
          • 1970-01-01
          • 2019-11-17
          相关资源
          最近更新 更多