Я нашел решение, вместо того чтобы использовать интерфейс, в котором вы создаете абстрактный класс, я изменил приведенный выше код, чтобы показать, как это делается:
public class CarPark
{
public int Id { get; set; }
public virtual ICollection<Car> Cars { get; set; }
}
public abstract class Car
{
public int Id { get; set; }
public string Model { get; set; }
}
[Table("Volvo")]
public class Volvo : Car
{
public string Color { get; set; }
}
[Table("Bmw")]
public class Bmw : Car
{
public int Wheels { get; set; }
}
Из-за табличной аннотации каждая машина заканчивается В отдельной таблице эта стратегия называется TPT - Таблица на тип. Если атрибут удален, все автомобили окажутся в одной таблице, эта стратегия называется TPH - Таблица на иерархию.
Пример довольно плохой но представьте себе, что каждый автомобиль - поставщик платежей с уникальными настройками или чем-то подобным.
Дополнительная информация: https://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx