0

推定:

BaseEntity
ChildEntity : BaseEntity

問題は、基本エンティティを効率的な方法で取得することです。私が知っているのは、このタイプのクエリです。

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

ただし、別の拡張子をに追加するだけでクエリが壊れるため、これは非常に壊れやすくなります (クエリにはand型が含まれます)。BaseEntityChildEntityTwo : BaseEntityBaseEntityChildEntityTwo

また、まだプロファイリングする機会がありませんでしたが、クエリがすべてのエンティティをダウンロードしてメモリ内でフィルター処理していると思われますが、これは間違っている可能性があります。

context.BaseEntities.OfType<BaseEntities>()ソリューションには、実際にはすべてのエンティティも含まれてダウンロードされることに注意してください。次のようなエンドポイントクラスが必要な場合にのみ機能しますChildEntityTwo

4

1 に答える 1

1

ESQL offers OFTYPE ONLY operator for this purpose but that operator doesn't have any equivalent in Linq. You can use this workaround to build OFTYPE ONLY for Linq.

于 2012-07-20T12:16:26.667 に答える