私には2つのクラスがあり、1つは以下のようなコレクションプロパティです。
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; }
}
上記のような関係を作成すると、エンティティ フレームワークは十分に賢く、NotificationMessageDevices を作成して、データベースに多対多の関係を作成します。
ここで問題が発生します。ここで、CreateDate をテーブル 'NotificationMessageDevices' に追加します。私が行ったことは、エンティティフレームワークが既存のデータベースにテーブル「NotificationMessageDevices」を作成する方法で「NotificationMessageDevice」という新しいクラスを作成したことです。新しいプロパティを追加し、Update-Verbose を呼び出しました。最初の例外は ID プロパティの欠落に関するもので、 public int ID {get;set;} を追加する必要がありましたが、これを追加すると、ID プロパティがインデックス プロパティであることがわかり、そのテーブル内のすべてのデータを削除する必要があります。
データ損失のないEntity Frameworkでのこのケースの回避策は何ですか:)