3

プレイヤーが攻撃、防御、アシストのスキルに応じて評価できるASP.NETMVC4アプリケーションを開発しようとしています。Offence、Defense、Assistは、同じルックアップテーブルを参照するPlayerテーブルの外部キーです-評価。

私は次の親エンティティを持っています:

public class Rating
{
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Player> Players { get; set; }
}

そして子エンティティ:

public class Player
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int OffenceRatingId { get; set; }
    [ForeignKey("OffenceRatingId")]
    public virtual Rating OffenceRating { get; set; }

    public int DefenceRatingId { get; set; }
    [ForeignKey("DefenceRatingId")]
    public virtual Rating DefenceRating { get; set; }

    public int AssistRatingId { get; set; }
    [ForeignKey("AssistRatingId")]
    public virtual Rating AssistRating { get; set; }
}

構築とスキャフォールディングは正常に機能しましたが、アプリを実行すると、次のエラーが発生します。

Introducing FOREIGN KEY constraint 'FK_dbo.Players_dbo.Ratings_DefenceRatingId' on table 'Players' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

私はMVCを初めて使用しますが、ここで何が欠けているのかわかりません。これに関するどんな助けも大いに感謝されるでしょう。ありがとう。

4

1 に答える 1

6

既定では、EntityFrameworkにはCascadeonDelete規則があります。2つのエンティティが相互に外部キーを持っている場合、循環参照が発生し、CascadeonDeleteを両方のエンティティに適用することはできません。

最も簡単な解決策は、削除規則でカスケードを削除し、ケースバイケースで適用することです。

于 2012-10-17T03:38:06.173 に答える