【发布时间】:2012-07-20 11:40:15
【问题描述】:
假设:
BaseEntity
ChildEntity : BaseEntity
问题在于以一种有效的方式获取基础实体。我知道有效的是这种类型的查询:
var results = context.BaseEntities.Where(entity => !(entity is ChildEntity) );
但是,这非常容易被破坏,因为简单地向BaseEntity 添加另一个扩展名,例如ChildEntityTwo : BaseEntity 会破坏查询(查询将包括BaseEntity 和ChildEntityTwo 类型。
另外,我还没有机会对其进行分析,但我怀疑查询会下载所有实体并在内存中过滤它们,但我可能错了。
请注意,context.BaseEntities.OfType<BaseEntities>() 解决方案实际上也将包含并下载所有实体!它仅在您需要端点类时才有效,例如 ChildEntityTwo
【问题讨论】:
标签: linq linq-to-entities ef-code-first entity-framework-5