2016-09-07 8 views
0

因此,我今天遇到了奇怪的情況 - 在用新表更新現有數據庫時,我在其中一個表中獲得了額外的列。ASP.NET - 在Code First數據庫更新期間出現意外的列

它是如何看起來像:

  • Raport.cs

    public class Raport 
    { 
        [DatabaseGenerated(DatabaseGeneratedOption.None)] 
        [Key] 
        public string raport_id { get; set; } //id raportu 
        public string userID { get; set; } 
        public DateTime creation_time { get; set; } 
        public DateTime last_modyfication { get; set; } 
    
    
        public virtual ICollection<ThrashType> ThrashType { get; set; } 
    
        public virtual UserFrontInfo UserFrontInfo { get; set; } 
    

    }

  • ThrashType.cs

    public class ThrashType 
        {  
        [Key] 
        //[DatabaseGenerated(DatabaseGeneratedOption.None)] 
        public int IdTrash { get; set; } 
        public string RaportId { get; set; } 
        public string ClassName { get; set; } 
    
        public int Quantity { get; set; }    
        public string Information { get; set; } 
    
        public virtual Raport Raport { get; set; } 
    
    } 
    
  • UserFrontInfo.cs

    public class UserFrontInfo 
    { 
    
        [DatabaseGenerated(DatabaseGeneratedOption.None)] 
        [Key] 
        public string userId { get; set; } 
        public string userName { get; set; } 
        public string whereFromName { get; set; } 
    
        public virtual ICollection<Raport> Raport { get; set; } 
    } 
    

我遇到了這種情況以前做什麼: 1 /加遷移 2 /因爲我需要追加新的表我也跟着這樣的: Reset Entity-Framework Migrations (下回答第一個評論;更易讀版):

學分格雷格膠這個(https://stackoverflow.com/users/425823/greg-gum

的問題:您已經打亂了你的遷移和你想 而不刪除現有的表重置。問題:您不能 重置數據庫中現有表的遷移,因爲EF想要 從頭開始創建表。解決辦法:從Migrations_History表中刪除現有的遷移 。從 遷移文件夾中刪除現有的遷移。運行添加遷移重置。這將在您的遷移文件夾中創建一個 遷移,其中包括創建表 (但它不會運行它,因此它不會出錯。)現在需要 在MigrationHistory表中創建初始行,以便EF具有 快照的現狀。如果您應用 遷移,EF將執行此操作。但是,由於數據庫中已存在表,因此無法應用剛剛創建的遷移 。因此請進入遷移 並註釋掉「Up」方法中的所有代碼。現在運行 update-database。它將應用遷移(實際上並不是 更改數據庫)並在MigrationHistory中創建快照行。 您現在已重置您的遷移,並可能繼續進行正常的 遷移。

然後它一切都很完美,但在ThrashType表中我有另外一個名爲「Raport_raport_id」的列。

回答

0

答案是將ThrashType中的字段名稱從「RaportId」更改爲「raport_id」,刪除dbo.ThrashType並重新創建上述步驟。

我想指出,我已經在上面的步驟中添加了一件事 - 在「number_digits_migration_file」.cs中,我僅註釋了現有表,並省略了我想創建的表。

雖然我解決了我的問題,但我很好奇。有沒有人有過Code First方法的這種經驗?

祝您有美好的一天!

相關問題