C# 实体框架迁移-未迁移的列
我在实体中添加了一个新属性,并运行命令生成新迁移,但生成的迁移不包含任何内容。看起来EF没有检测到列add。为了在迁移中添加列,我还需要做些什么吗?这是我的班级:C# 实体框架迁移-未迁移的列,c#,entity-framework,entity-framework-migrations,C#,Entity Framework,Entity Framework Migrations,我在实体中添加了一个新属性,并运行命令生成新迁移,但生成的迁移不包含任何内容。看起来EF没有检测到列add。为了在迁移中添加列,我还需要做些什么吗?这是我的班级: public class Group { public int Id { get; set; } public int OrganizerId { get; set; } public string Name { get; set; } public string ImageUrl { get; se
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; }
}
它正确地生成了一个新的迁移,但迁移是这样的:
public partial class AddGroupIsOnline : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
上上下下什么都不做。它应该加上我的财产,我的假设正确吗
你知道会发生什么吗
谢谢你的帮助 好的,所以我找到了“问题”。基本上,在我在组类中添加IsOnline属性之后,自动迁移已经发生了。因此,当我运行addmigration 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");
}
}
因此,我在这里的自我提示是:如果迁移中没有显示任何内容,那么就没有要迁移的内容。在[\uu MigrationHistory]表中验证数据库和自动迁移
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");
}
}