我使用EF6和代码优先迁移。我有两个表使用ef6重命名表和外键失败使用EF6
public class Team {
public int Id { get; set; }
public string Name { get; set; }
}
public class TeamMember {
public int Id { get; set; }
public string Name { get; set; }
public Team Team { get; set; }
public int TeamId { get; set; }
}
我想TeamMember重命名为TeamMemberDeprecated并添加新的名为提交与TeamMember一定的差异,以表格的布局。我创建一个新表的主要原因是数据。我想将所有数据保存在当前的TeamMember表中,因此我需要重命名它,并且我只想将需要的特定数据传输到新的TeamMember表。
当我添加迁移它看起来像这样
RenameTable(name: "dbo.TeamMember", newName: "TeamMemberDeprecated");
什么也不会做的是改变从FK_dbo.TeamMember_dbo.Team_TeamId到FK_dbo.TeamMemberDeprecated_dbo.Team_TeamId外键属性的名称。
由于外键FK_dbo.TeamMember_dbo.Team_TeamId已经存在于数据库中,因此在创建新的TeamMember表时会出现问题。
我尝试删除外键并重命名它,但这并没有做任何事情,当我运行迁移-verbose时,我明白了为什么它期望外键为空。我想保留这些数据,但也许我的方法是错误的。
欢迎任何建议,谢谢。
非常感谢!这基本上是我对一个小的改变所做的事情,我在我的migrations脚本中包含了sql命令,这样我就可以定位先前和后期的迁移,并确保所有命令都正确命名。谢谢你的帮助。 – Woot