いくつかのオブジェクト間でエンティティ フレームワークを適切に設定する方法について質問があります。3 つのオブジェクト/テーブルは次のとおりです: Company、Orders、Channels Company は 1 対多の Orders Company は 1 対多の Channels Channels は 1 対多の Orders
次のように設定すると、「サイクルまたは複数のカスケード パスが発生する可能性があります」というエラーが表示されます。
public class Order
{
/// <summary>
/// System Generator OrderNumber
/// </summary>
[Key]
public int ID { get; set; }
/// <summary>
/// Company associated to this order
/// </summary>
[ForeignKey("MerchantId")]
public virtual Company { get; set; }
public int CompanyId { get; set; }
/// <summary>
/// ID of the channel that provided this information
/// </summary>
[ForeignKey("SourceChannelId")]
public virtual Channel { get; set; }
public int ChannelId { get; set; }
}
public class Company
{
public List<Order> Orders{get;set;}
public List<Channel> Channels{get;set;}
}
public class Channel
{
public List<Order> Orders{get;set;}
}
チャネルに移動してから会社に移動することで、注文から会社へのリンクを削除できることはわかっていますが、注文にチャネルがない場合があります。しかし、注文に会社がないというケースは決してありません。1 対多の順序関係を持つ 3 番目のオブジェクトもありますが、最初の 2 つが正しく機能すれば、それを理解できます :)
私は dataannotations メソッドを使用したいと思いますが、流暢でも問題ありません。