Table Per Hierarchy is the default. You shouldn't need to provide any additional setup besides what you already have.
This is taken from the TPH example from weblogs.asp.net:
public abstract class BillingDetail
{
public int BillingDetailId { get; set; }
public string Owner { get; set; }
public string Number { get; set; }
}
public class BankAccount : BillingDetail
{
public string BankName { get; set; }
public string Swift { get; set; }
}
public class CreditCard : BillingDetail
{
public int CardType { get; set; }
public string ExpiryMonth { get; set; }
public string ExpiryYear { get; set; }
}
public class InheritanceMappingContext : DbContext
{
public DbSet<BillingDetail> BillingDetails { get; set; }
}
This will create a single table called BillingDetails with a discriminator column.
Discriminator Column
As you can see in the DB schema above, Code First has to add a special
column to distinguish between persistent classes: the discriminator.
This isn’t a property of the persistent class in our object model;
it’s used internally by EF Code First. By default, the column name is
"Discriminator", and its type is string. The values defaults to the
persistent class names —in this case, “BankAccount” or “CreditCard”.
EF Code First automatically sets and retrieves the discriminator
values.