我有2個類,一個是其他像下面的集合屬性。修改多對多表創建者EF5代碼優先
public class NotificationMessage
{
public int ID { get; set; }
public string Message { get; set; }
public virtual ICollection<Device> Devices { get; set; }
}
public class Device
{
public int ID { get; set; }
public string Token { get; set; }
public virtual ICollection<NotificationMessage> NotificationMessages { get; set; }
}
public class NotificationMessageDevice
{
[Column(Order = 0), Key, ForeignKey("NotificationMessage")]
public int NotificationMessageID { get; set; }
[Column(Order = 1), Key, ForeignKey("Device")]
public int DeviceID { get; set; }
public virtual Device Device { get; set; }
public virtual NotificationMessage NotificationMessage { get; set; }
}
當你創建一個類似上述的關係,實體flamework非常聰明,通過創建NotificationMessageDevices創造出許多對數據庫的一對多的關係。
問題在這裏上升。現在我想將CreateDate添加到表'NotificationMessageDevices'中。我所做的是,我以實體框架在現有數據庫中創建表「NotificationMessageDevices」的方式創建了一個名爲'NotificationMessageDevice'的新類。我添加了新的屬性並稱爲Update-Verbose。第一個例外是關於缺少ID屬性,它希望我添加public int ID {get; set;}但是,當我添加它時,它意識到ID屬性是index屬性,因此我需要刪除該表中的所有數據。
這是什麼情況下,對實體框架的無數據丟失:)
您是否嘗試使用代碼優先遷移? – Richard
實際上不是遷移。我從頭開始用代碼優先創建了我的數據庫。但是我意識到,對於多對多關係,EF會創建一個新表來保存數據。現在我想將另一列添加到該鏈接器表中。 – kkocabiyik
不管你是在更改數據庫,你將不得不做某種遷移,但爲了繞過ID屬性,在鏈接器表中創建一個複合鍵。即分別將屬性[Key,Column(Order = 1)]和[Key,Column(Order = 2)]添加到鏈接器表的ID屬性中。 – user1793607