2017-04-06 58 views
1

創建一個新列,我向已經有一個鏈接到同一個表的表添加了第二列。 我改變之前我的模型看起來如下:c#EntityFramework CodeFirst遷移爲我的數據庫模型中現有的一個

[Table("RepairProcesses", Schema = "Data")]  
public class RepairProcess : DatabaseBase 
{ 
    [DataMember] 
    [Column("SerialNumberID")] 
    public Guid SerialNumberID { get; set; } 

    [ForeignKey("SerialNumberID")] 
    public virtual SerialNumber SerialNumber { get; set; } 
} 

現在我加入了第二個鏈接到表和模型現在看起來如下:

[Table("RepairProcesses", Schema = "Data")]  
public class RepairProcess : DatabaseBase 
{ 
    [DataMember] 
    [Column("SerialNumberID")] 
    public Guid SerialNumberID { get; set; } 

    [DataMember] 
    [Column("ReplacementSerialNumberID")] 
    public Guid? ReplacementSerialNumberID { get; set; } 

    [ForeignKey("SerialNumberID")] 
    public virtual SerialNumber SerialNumber { get; set; } 

    [ForeignKey("ReplacementSerialNumberID")] 
    public virtual SerialNumber ReplacementSerialNumber { get; set; } 
} 

現在當我試圖創建migrationscript的EntityFramework刪除foreingn鍵並創建一個名爲SerialNumber_ID的新列。

public override void Up() 
    { 
     DropForeignKey("Data.RepairProcesses", "SerialNumberID", "Data.SerialNumbers"); 
     AddColumn("Data.RepairProcesses", "SerialNumber_ID", c => c.Guid()); 
     AddColumn("Data.RepairProcesses", "ReplacementSerialNumberID", c => c.Guid()); 
     CreateIndex("Data.RepairProcesses", "SerialNumber_ID"); 
     CreateIndex("Data.RepairProcesses", "ReplacementSerialNumberID"); 
     AddForeignKey("Data.RepairProcesses", "ReplacementSerialNumberID", "Data.SerialNumbers", "ID"); 
     AddForeignKey("Data.RepairProcesses", "SerialNumber_ID", "Data.SerialNumbers", "ID"); 
    } 

    public override void Down() 
    { 
     DropForeignKey("Data.RepairProcesses", "SerialNumber_ID", "Data.SerialNumbers"); 
     DropForeignKey("Data.RepairProcesses", "ReplacementSerialNumberID", "Data.SerialNumbers"); 
     DropIndex("Data.RepairProcesses", new[] { "ReplacementSerialNumberID" }); 
     DropIndex("Data.RepairProcesses", new[] { "SerialNumber_ID" }); 
     DropColumn("Data.RepairProcesses", "ReplacementSerialNumberID"); 
     DropColumn("Data.RepairProcesses", "SerialNumber_ID"); 
     AddForeignKey("Data.RepairProcesses", "SerialNumberID", "Data.SerialNumbers", "ID"); 
    } 

的問題是,這是一個生產數據庫,當EF爲的serialNumber創建一個新的領域我失去了鏈接到正確的領域。

當我只刪除創建新列的Up/Down Script中的行時,我遇到了問題,因爲EF期望列名爲SerialNumber_ID。

感謝您的幫助, 邁克爾

回答

1

試圖改變SerialNumber類是這樣的:

public class SerialNumber 
{ 
    //other stuff.... 

    [InverseProperty("SerialNumber")] 
    public virtual ICollection<RepairProcess> SerialNumbers {get;set;} 

    [InverseProperty("ReplacementSerialNumber")] 
    public virtual ICollection<RepairProcess> ReplacementSerialNumbers {get;set;} 
} 
+0

太謝謝你了!這有訣竅 – Michael

相關問題