2012-10-17 5 views
3

플레이어가 Offense, Defense 및 Assist 기술에 따라 등급이 매겨 질 수있는 ASP.NET MVC 4 응용 프로그램을 개발하려고합니다. Offence, Defense 및 Assist는 동일한 조회 테이블을 참조하는 Player 테이블의 외래 키입니다.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

기본적으로 Entity Framework에는 삭제할 때 캐스케이드 규칙이 있습니다. 두 엔티티가 서로 외래 키를 가지고 있으면 순환 참조가 발생하고 삭제시 계단식을 두 엔티티에 모두 적용 할 수 없습니다.

가장 간단한 해결책은 cascade on delete convention을 제거하고 사례별로 적용하는 것입니다.

+0

감사합니다. Mike. 알았어. – corix010