0

认为:

BaseEntity
ChildEntity : BaseEntity

问题在于以一种有效的方式获取基础实体。我知道有效的是这种类型的查询:

var results = context.BaseEntities.Where(entity => !(entity is ChildEntity) );

然而,这容易被破坏,因为简单地添加另一个扩展BaseEntity,就像ChildEntityTwo : BaseEntity会破坏查询(查询将包括BaseEntityChildEntityTwo类型。

此外,我还没有机会对其进行分析,但我怀疑查询会下载所有实体并将它们过滤到内存中,但我可能错了。

请注意,该解决方案context.BaseEntities.OfType<BaseEntities>()实际上也将包含并下载所有实体!它仅在您需要端点类时才有效,例如ChildEntityTwo

4

1 回答 1

1

ESQLOFTYPE ONLY为此提供了运算符,但该运算符在 Linq 中没有任何等效项。您可以使用此解决方法为 Linq构建OFTYPE ONLY

于 2012-07-20T12:16:26.667 回答