2010-12-13 5 views
12

코드 첫 번째 EF4 (CTP5 사용)에서는 외래 키와 함께 단일 탐색 속성을 추가 할 수 있으며 외래 키만 추가하고 이름을 존중합니다 한 번만 테이블에. 그런 다음 동일한 유형의 두 번째 속성을 추가하면 두 개가 아닌 네 개의 열로 구분됩니다.엔티티 프레임 워크에서 동일한 유형의 두 탐색 속성을 설정하는 방법

샘플 코드 :이 모델

, 나는 PressTypeID 이름 PressType에 대한 AdapterFrameCapability 테이블에 추가 한 속성을 가져.

public class AdapterFrameCapability 
{ 
    [Key] 
    public int AdapterFrameCapabilityID { get; set; } 

    [Required] 
    public int PressTypeID { get; set; } 

    public virtual PressType PressType { get; set; } 
} 

내가 모델링하고자하는 설정이지만, 4 열이 테이블 FromPressTypeID, FromPressTypeFromPressTypeID, ToPressTypeID 및 ToPressTypePressTypeID 하나의 각각에서 생성되는 결과. 이상적으로 저는 FromPressTypeID와 ToPressTypeID에 대한 열을 원합니다. 여기서 내가 뭘 잘못하고 있니?

public class AdapterFrameCapability 
{ 
    [Key] 
    public int AdapterFrameCapabilityID { get; set; } 

    [Required] 
    public int FromPressTypeID { get; set; } 

    [Display(Name = "From Press Type")] 
    public virtual PressType FromPressType { get; set; } 

    [Required] 
    public int ToPressTypeID { get; set; } 

    [Display(Name = "To Press Type")] 
    public virtual PressType ToPressType { get; set; } 
} 

답변

14

그것은 원하는 스키마를 얻기 위해 당신이 fluent API 드롭 다운을 필요로하는 그 시나리오 중 하나입니다 :

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<AdapterFrameCapability>() 
       .HasRequired(afc => afc.FromPressType) 
       .WithMany() 
       .HasForeignKey(afc => afc.FromPressTypeID) 
       .WillCascadeOnDelete(true); 

    modelBuilder.Entity<AdapterFrameCapability>() 
       .HasRequired(afc => afc.ToPressType) 
       .WithMany() 
       .HasForeignKey(afc => afc.ToPressTypeID) 
       .WillCascadeOnDelete(false); 
} 

는 협회의 한에 떨어져 삭제 캐스케이드 전환 의도적 인 그렇지 않으면 SQL 서버 때문에

Introducing FOREIGN KEY constraint 'AdapterFrameCapability_ToPressType' on table 'AdapterFrameCapabilities' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint.

: 다음과 같은 오류를 던져 그래서 우리는 코드에서했던 방식과 같은 연관성 중 하나를 해제해야합니다.

0

난 당신이 데이터 주석 속성

[ForeignKey("FromPressTypeId")] 

등을 사용하는 가정 줄 알았는데

관련 문제