gpt4 book ai didi

c# - Entity Framework 迁移 - 未迁移的列

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:39 25 4
gpt4 key购买 nike

我在我的实体中添加了一个新属性并运行了生成新迁移的命令,但生成的迁移不包含任何内容。看起来 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 什么都不做。它应该添加了我的属性(property),我的假设是否正确?

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

感谢大家的帮助!

最佳答案

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

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

Migration record

然后我删除了 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");
}
}

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

关于c# - Entity Framework 迁移 - 未迁移的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com