2012-05-16 79 views
0

我這樣做是基於具有鑑別器過濾器的TPH在同一個表上創建多個子類。實體框架4.1 - 在同一列上使用外鍵繼承

public class TraceBilletStation : Trace 
{ 
    [UserVisible(Ordre = 6)] 
    public BilletStation BilletStationnement { get; set; } 
} 

public class TraceBilletStationMap : EntityTypeConfiguration<TraceBilletStation> 
{ 
    public TraceBilletStationMap() 
    { 
     this.HasOptional(p => p.BilletStationnement).WithMany() 
      .Map(x => x.MapKey("TRA_CONCEPT_ID_INFO")); 
    } 
} 

它正常工作,有一個孩子,但我需要更多的,所以我補充一點:

public class TraceAcheteur : Trace 
{ 
    [UserVisible(Ordre = 6)] 
    public Acheteur Acheteur { get; set; } 
} 


public class TraceAcheteurMap : EntityTypeConfiguration<TraceAcheteur> 
{ 
    public TraceAcheteurMap() 
    { 
     this.HasOptional(p => p.Acheteur).WithMany() 
      .Map(x => x.MapKey("TRA_CONCEPT_ID_INFO")); 
    } 
} 

而且我得到一個MetadataException說,財產「TRA_CONCEPT_ID_INFO」已定義。

你有什麼想法嗎?

回答

0

您不能映射任何列兩次。您必須爲您的第二個關係使用另一列,或者您必須只使用基類中定義的單一關係。