因此,我今天遇到了奇怪的情況 - 在用新表更新現有數據庫時,我在其中一個表中獲得了額外的列。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」的列。