我有不同的汽车,每个都有特定的汽车类型。 所有汽车都继承自相同的抽象基类CarBase。 CarBase类具有CarType的navigaiton属性。
public abstract CarTypeBase
{
public string Name { get; set; }
}
public class FordCarType : CarTypeBase
{
}
public abstract class CarBase {
public CarTypeBase CarType { get; set; }
public string GetName() {
return CarType.Name;
}
}
public class Ford : CarBase {
}
使用以下EF映射配置映射福特:
builder.HasOne(o => (FordCarType) o.CarType);
对于CarTypeBase类,我使用Entity Framework的默认Table per Hierarchy(TPH)映射,因此CarTypeBase表具有discriminator列。 而福特表有一个CarTypeBase表的外键。
问题是如果我试图在GetName()方法中访问它,那么Ford CarType导航属性总是为null。如果我使用具体类型FordCarType,则CarType属性将映射到Ford类中。
所以也许我想要实现的是EF无法实现的,或者根本不可能实现?
答案 0 :(得分:0)
迟到聚会了,但是不应该这样:
public abstract CarTypeBase
{
public string Name { get; set; }
}
public abstract class CarBase : CarTypeBase {
public string GetName() {
return this.Name;
}
}
public class Ford : CarBase {
}