有这些:
class Base
{
public int ID {get;set;}
}
class DerivedA : Base
{
}
class DerivedB : Base
{
}
...
然后我可以像这样设置公共主键:
builder.EntityType<Base>().HasKey(m => m.ID);
但是,当我这样做时,每个派生类型都会被映射,这由于各种原因是不可取的,一个是我有几十个派生类型。耐心地,我试图忽略每一个我不想要的,我最终得到了这个错误:
The sequence contains more than one element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at System.Web.OData.Builder.ODataConventionModelBuilder.RemoveBaseTypeProperties(StructuralTypeConfiguration derivedStructrualType, StructuralTypeConfiguration baseStructuralType)
at System.Web.OData.Builder.ODataConventionModelBuilder.DiscoverInheritanceRelationships()
at System.Web.OData.Builder.ODataConventionModelBuilder.GetEdmModel()
我确实相信这些忽略最终会以某种方式相互重叠。我只是无法为它们中的每一个微调一个忽略块。到目前为止唯一有效的是将 ID 属性重新定义为每个派生类的新属性,这几乎违背了基类的全部目的。
有什么提示吗?