我在我的实体中添加了一个新属性并运行该命令以生成新的迁移,但生成的迁移不包含任何内容。看起来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什么都不做。应该添加我的属性,我的假设是正确的吗?
对可能发生的事情有任何想法?
感谢您的帮助!
答案 0 :(得分:1)
好的,所以我发现了&#34;问题&#34;。基本上,在我的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]表中的自动迁移。