【问题标题】:Entity Framework Migration - Column not being migrated实体框架迁移 - 未迁移列
【发布时间】:2014-06-24 06:30:27
【问题描述】:

我在我的实体中添加了一个新属性并运行了生成新迁移的命令,但生成的迁移不包含任何内容。看起来 EF 没有检测到添加列。为了在迁移中添加列,我还需要做些什么吗?这是我的课:

 public class Group
{
    public int Id { get; set; }
    public int OrganizerId { get; set; }
    public string Name { get; set; }
    public string ImageUrl { get; set; }

    public bool IsOnline { get; set; }

    public virtual User Organizer { get; set; }
    public virtual ICollection<GroupParticipation> GroupParticipations { get; set; }
    public virtual ICollection<Question> Questions { get; set; }
    public virtual ICollection<Subject>  Subjects{ get; set; }
}

我已隔离我要添加的属性,即“IsOnline”。将其添加到类并编译项目后,我运行以下命令:

Add-Migration AddGroupIsOnline

它正确地生成了一个新的迁移,但迁移的样子如下:

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

    public override void Down()
    {
    }
}

Up 和 Down 什么都不做。它应该添加了我的属性,我的假设是否正确?

对可能发生的事情有任何想法吗?

感谢大家的帮助!

【问题讨论】:

    标签: c# entity-framework entity-framework-migrations


    【解决方案1】:

    好的,所以我找到了“问题”。基本上,在我在 Group 类中添加 IsOnline 属性后的某个时刻发生了自动迁移。因此,当我运行Add-Migration AddGroupIsOnline 时,没有检测到任何更改(因为它已经被自动迁移更改了)。

    我最终通过查看我的数据库表找到了答案,并且该列已经存在。然后我查看了迁移表,它是在激活 DB 迁移后创建的,我发现了以下行:

    然后我删除了IsOnline列,从数据库中删除了自动迁移记录,然后重新运行:

    Add-Migration AddGroupIsOnline
    

    结果如下:

    public partial class AddGroupIsOnline : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Groups", "IsOnline", c => c.Boolean(nullable: false));
        }
    
        public override void Down()
        {
            DropColumn("dbo.Groups", "IsOnline");
        }
    }
    

    所以我的自我提示是:如果迁移中没有显示任何内容,则没有要迁移的内容。验证 [__MigrationHistory] ​​表中的数据库和自动迁移。

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2019-06-24
      相关资源
      最近更新 更多