I do this to create several child classes on a same table based on TPH with discriminator filter.
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"));
}
}
It works fine with one child, but I need more, so I add this :
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"));
}
}
and there I get a MetadataException saying that the property “TRA_CONCEPT_ID_INFO” has already been defined.
Do you have any ideas ?
You cannot map any column twice. You must use another column for your second relation or you must use only single relation defined in the base class.