EF CodeFirst Mapping relationship between derived classes to the same table
I need to do the following mapping
OrderItem will map to tbl_order_item
OrderItemCustomization will map to tbl_order_item_customization
I have a column [cd_order_item] in tbl_order_item_customization which is
the foreign key
The problem is how I map the relationship between
CardOrderItem -> CardOrderItemCustomization
CustomCardOrderItem -> CustomCardOrderItemCustomization
I tried this
public class OrderItemConfiguration : EntityTypeConfiguration<OrderItem>
{
public OrderItemConfiguration()
{
ToTable("tbl_order_item");
HasKey(i => i.Id);
Property(i => i.Id).HasColumnName("cd_order_items");
HasRequired(i => i.Order).WithMany(o => o.Items).Map(m =>
m.MapKey("cd_order"));
HasRequired(i => i.Product).WithMany().Map(m => m.MapKey("cd_product"));
Property(i => i.Quantity).HasColumnName("cd_quantity");
Property(i =>
i.UnitAmount).HasColumnName("vl_item").HasColumnType("money");
Property(i =>
i.TotalAmount).HasColumnName("vl_total").HasColumnType("money");
Property(i => i.DiscountAmount).HasColumnName("vl_discount");
Property(i => i.CostAmount).HasColumnName("vl_cost_price");
Property(i => i.NetAmount).HasColumnName("vl_net");
HasRequired(i => i.Status).WithMany().Map(m => m.MapKey("cd_status"));
Property(i => i.IsActive).HasColumnName("fl_active");
}
}
public class AbstractCardOrderItemConfiguration :
EntityTypeConfiguration<AbstractCardOrderItem>
{
public AbstractCardOrderItemConfiguration()
{
Property(i => i.IsVirtual).HasColumnName("fl_virtual");
Property(i => i.CardType).HasColumnName("cd_card_type").IsOptional();
Property(i => i.Document).HasColumnName("nr_document");
HasRequired(i => i.Package).WithRequiredPrincipal().Map(m =>
m.MapKey("cd_order_item_base"));
}
}
public class CardOrderItemConfiguration :
EntityTypeConfiguration<CardOrderItem>
{
public CardOrderItemConfiguration()
{
HasRequired(i =>
i.CardOrderItemCustomization).WithRequiredPrincipal().Map(m =>
m.MapKey("cd_order_items"));
}
}
public class CustomCardOrderItemConfiguration :
EntityTypeConfiguration<CustomCardOrderItem>
{
public CustomCardOrderItemConfiguration()
{
HasRequired(i =>
i.CardWithCustomPhotoOrderItemCustomization).WithRequiredPrincipal().Map(m
=> m.MapKey("cd_order_items"));
}
}
But this gives me an error:
One or more validation errors were detected during model generation:
cd_order_items: Name: Each property name in a type must be unique.
Property name 'cd_order_items' is already defined.
There is any way that can I achieve the desired mapping?
No comments:
Post a Comment