认为:
BaseEntity
ChildEntity : BaseEntity
问题在于以一种有效的方式获取基础实体。我知道有效的是这种类型的查询:
var results = context.BaseEntities.Where(entity => !(entity is ChildEntity) );
然而,这很容易被破坏,因为简单地添加另一个扩展BaseEntity
,就像ChildEntityTwo : BaseEntity
会破坏查询(查询将包括BaseEntity
和ChildEntityTwo
类型。
此外,我还没有机会对其进行分析,但我怀疑查询会下载所有实体并将它们过滤到内存中,但我可能错了。
请注意,该解决方案context.BaseEntities.OfType<BaseEntities>()
实际上也将包含并下载所有实体!它仅在您需要端点类时才有效,例如ChildEntityTwo