0

次のテーブル構造を簡略化しました

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 コマンドは機能しますが、これはうまくいきません。

4

1 に答える 1