【发布时间】:2015-03-22 17:48:36
【问题描述】:
我有以下型号:
public abstract class AbstractBase { }
public abstract class AbstractBase<T> : AbstractBase where T : SomeOtherTypeBase
{
T MyProp {get; set;}
}
public class Concrete1 : AbstractBase<OtherTypeSpecializationFor1> { }
public class Concrete2 : AbstractBase<OtherTypeSpecializationFor2> { }
但是实体框架给了我错误:
抽象类型 AbstractBase 没有映射的后代,因此无法映射
在我看来,这不应该发生,因为 AbstractBase 直接继承自 AbstractBase,而具体的类 Concrete1/2 继承自 GenericAbstractBase。这是怎么回事?
另外,出于好奇,我想知道 GenericAbstractBase 中类型 T 的属性是否会被 EF 保留,以防路过的人想到答案。
更新 1
谁能确认这受 EF 支持?我看过这个post,根据罗文的回答,应该是这样。 谢谢
更新 2 当泛型基类不是抽象的时,同样的问题。
【问题讨论】:
-
Concrete1和Concrete2是否实际映射到您的配置中? -
是的,我有这些类型的 DbSet,我还在 OnModelCreating 中明确注册了它们
-
不,根本不是,他既没有使用代码优先,也没有使用泛型。实际上 EF 团队解决了我的问题,我忘了在这里发布答案。我马上就做。
标签: c# entity-framework