我使用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