次のテーブル構造を簡略化しました
public class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
}
public class Buyer
{
public int BuyerId { get; set; }
public int UserId { get; set; }
public UserProfile User { get; set; }
public ICollection<Order> Order { get; set; }
}
public class Seller
{
public int SellerId { get; set; }
public int UserId { get; set; }
public UserProfile User { get; set; }
public ICollection<Order> Orders { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public int BuyerId { get; set; }
public int SellerId { get; set; }
public string Address { get; set; }
public <OrderLine> OrderLines { get; set; }
}
public class OrderLine
{
public int OrderId { get; set; }
public int OrderLineNo { get; set; }
public int StockId { get; set; }
public int Quantity { get; set; }
}
Update_Database コマンドを実行すると、次のエラーが表示されます
テーブル 'Buyers' に FOREIGN KEY 制約 'FK_dbo.Buyers_dbo.UserProfile_UserId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更してください。
私の Buyer テーブルと Seller テーブルは、UserId の UserProfile と 1 対 1 の関係にあるため、Buyer を削除すると、Seller が存在する可能性があるため UserProfile を削除できないことを理解しています。
したがって、流動的な構文を使用して、購入者からユーザーへ、販売者からユーザーへのカスケード削除をオフにしたいのですが、何かを機能させることができないので、誰かが助けてくれれば幸いです。
同じエラーについて他の StackOVerflow の質問を調べましたが、シナリオに一致するものが見つかりませんでした。
補足: Buyer テーブルの UserId の名前を DummyUserId に変更すると、Update-Database コマンドは機能しますが、これはうまくいきません。