我必须在我的数据库中重命名2列。我正在使用代码优先迁移。 因此,我将以下代码添加到我在Package Manager控制台中运行'add-migration migration_name'命令后创建的迁移文件中的up()方法中。(/ p>
代码
public override void Up()
{
RenameColumn(table: "dbo.Table1", name: "oldColumnName", newName: "newColumnName");
RenameColumn(table: "dbo.Table1", name: "oldColumnName2", newName: "newColumnName2");
}
public override void Down()
{
RenameColumn(table: "dbo.Table1", name: "oldColumnName2", newName: "newColumnName2");
RenameColumn(table: "dbo.Table1", name: "oldColumnName", newName: "newColumnName");
}
}
我没有对我的模型进行任何更改,因为如果我在模型中添加或删除任何属性,它将添加或删除这些列。
我的问题是在软件包管理器控制台中运行update-database命令之后,模型本身是否会更新,或者我是否需要进行更改,如果是,那么更改以及何时在模型中进行更改。
答案 0 :(得分:1)
如果更改生成的迁移代码,则需要确保映射代码与数据库同步。
如果您没有映射类,并且使用约定优于配置,那么您需要更改模型。
如果您有映射代码或单独的映射类,则需要更新映射代码以与数据库保持同步。
答案 1 :(得分:0)
您可以将列名属性添加到模型中,不需要输入。 这不是必需的,但如果遇到任何映射问题,这应该正确映射列。
[Column(“BlogDescription", TypeName="ntext")]
public String Description {get;set;}
使用Code First 名字是:
public String FName {get; set;}
已更改为
public String FirstName {get; set;}
然后我运行命令 添加迁移UpdateColumnName 然后是命令 更新数据库 一切都应该正确映射。