![](/img/trans.png)
[英]Rename a column and also changing the column type through migration in EF Code First
[英]Rename a column in EF with Code First
我在班上改名了。 看起來像這樣。
public class clsClassForStackoverflow
{
[Column(TypeName = "varchar"), StringLength(150)]
public string Name { get; set; }
由於結構上的更改,我不得不將其重命名。 因此,我刪除了該行並添加了新屬性。 之后,我創建了一個新的遷移文件來准備數據庫更新,他想在該文件中刪除舊列並添加新列。 好吧,因為數據庫中仍然有數據,所以將其更改為重命名。 一滴一滴,它將消失。
新的遷移文件:
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");
}
}
啟動數據庫更新后,我查看了我的課程,並且屬性沒有改變。 它仍然命名為“名稱”,而不是“ NewName”。 在沒有讓EF認為自己刪除並添加一列的情況下,我該如何更改?
您需要按以下順序進行更改:
Name
屬性重命名為NewName
Up
/ Down
方法的內容 這是我已經多次完成此操作的方式。 重要的是在創建遷移時不要觸摸與遷移關聯的模型快照。
PS:如果我沒記錯的話,如果滿足某些(對我來說未知)約束,EF甚至可以檢測到重命名,因為我認為在進行簡單的屬性/列重命名時,甚至不必總是更改遷移。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.