【问题标题】:ASP.NET MVC 4 Multiple Foreign Keys Referencing Single Parent EntityASP.NET MVC 4 引用单个父实体的多个外键
【发布时间】:2012-10-07 06:14:10
【问题描述】:

我正在尝试开发一个 ASP.NET MVC 4 应用程序,在该应用程序中,玩家可以根据他们的进攻、防守和助攻技能进行评分。 Offence、Defense 和 Assist 是 Player 表上的外键,引用同一个查找表 - Rating。

我有以下父实体:

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 的新手,不知道我在这里缺少什么。对此的任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: asp.net-mvc foreign-keys entity poco


    【解决方案1】:

    默认情况下,Entity Framework 有一个 Cascade on Delete 约定。当两个实体相互有外键时,会导致循环引用,并且删除时的级联不能应用于两个实体。

    最简单的解决方案是删除cascade on delete convention,并根据具体情况应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多