我在班上重新命名了一个专栏。它看起来像这样。
public class clsClassForStackoverflow
{
[Column(TypeName = "varchar"), StringLength(150)]
public string Name { get; set; }
由于结构发生了变化,我不得不重命名。所以我删除了那一行,并添加了新的属性。之后我创建了一个新的迁移文件来准备我的数据库更新,并在文件中他想删除旧列并添加新列。好吧,我将drop更改为重命名,因为数据库中仍有数据。随着下降它就会消失。
新的迁移文件:
public partial class _100126_2 : DbMigration
{
public override void Up()
{
RenameColumn("dbo.tbClassForStackoverflow", "ClassForStackoverflow_Name", "ClassForStackoverflow_NewName");
}
public override void Down()
{
RenameColumn("dbo.tbClassForStackoverflow", "ClassForStackoverflow_NewName", "ClassForStackoverflow_Name");
}
}
启动数据库更新后,我查看了我的课程,并且属性没有改变。它仍然命名为“名称”而不是“新名称”。如果不让EF认为我删除并添加了一列,我怎么能改变呢?
答案 0 :(得分:4)
您需要按以下顺序进行此更改:
platform :ios, '8.0'
媒体资源重命名为Name
NewName
/ Up
方法的内容这就是我多次没有遇到问题的方式。重要的是在创建迁移时不要触摸与迁移关联的模型快照。
PS:如果我没记错,EF甚至会检测到重命名,如果满足某些(对我未知)约束,因为我认为在进行简单的属性/列重命名时,甚至不一定需要更改迁移。