Since I can choose a field as TipoOperacionId
to be a discriminator, I have the following code.
public MovimientoMap()
{
ToTable("Movimientos");
HasKey(c => c.MovimientoId);
Property(c => c.MovimientoId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(c => c.MovimientoId).HasColumnOrder(0);
HasRequired(c=>c.TipoOperacion).WithMany(c=>c.Movimientos).HasForeignKey(c=>c.TipoOperacionId)
.WillCascadeOnDelete(false);
Property(c => c.TipoOperacionId).HasColumnOrder(1);
Property(c => c.FechaMovimiento).HasColumnOrder(2);
Map<MovimientoVenta>(c => c.Requires("Type")
.HasValue(1));
Map<MovimientoCompra>(c => c.Requires("Type")
.HasValue(2));
}