2012-10-17 46 views
3

我想開發一個ASP.NET MVC 4應用程序,玩家可以根據他們的攻擊,防禦和協助技能進行評分。攻擊,防守和助攻是引用相同查找表的玩家表上的外鍵 - 評級。ASP.NET MVC 4引用單個父實體的多個外鍵

我有以下父實體:

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,不知道我在這裏失蹤。任何幫助,將不勝感激。謝謝。

回答

6

默認情況下,實體框架具有級聯刪除約定。當兩個實體彼此具有外鍵時,它會導致循環引用,並且級聯刪除不能應用於兩個實體。

最簡單的解決方案是刪除cascade on delete convention,並將其應用於個案的基礎上。

+0

謝謝邁克。得到它的工作。 – corix010

相關問題