エンティティフレームワークに3つのクラスがある場合。
class Base {}
class Left : Base {}
class Right : Base {}
そして私は電話しますDBContext.Bases.ToList();
これにより、完全に型指定されたすべてのインスタンスがBase
関連する継承型に返されます。一部の人が気付いたように、大規模な継承構造でのEFのパフォーマンスは控えめに言っても素晴らしいものではありません。プロジェクトでの実際のクエリは600行の長さで、1つのエンティティを返すだけで、生成に2秒かかります。
構造全体で結合する必要がないため、返すタイプを指定すると、クエリの実行速度が大幅に向上します。例えば
DBContext.Bases.OfType<Left>.ToList();
or
DBContext.Bases.OfType<Right>.ToList();
ただし、基本クラスのみを返したいと思います。不幸なこと
DBContext.Bases.OfType<Base>.ToList();
DBContext.Bases.ToList();と同じことを行います。
それは全体の継承構造を取得します... Baseコレクションを調べたときにクラスBaseのみを返す方法はありますか(EFで新しいタイプを作成せずに)?
申し訳ありませんが、実際のアカウントにログインできません...
明確にしなかったかもしれませんが、すべてのオブジェクト(Base、Left、Rightを含む)を戻したいのですが、データベース内で実際のLeftクラスとRightクラスであっても、Baseクラスのみを返したいと思います。
OFTYPEは良い提案でしたが、実際のBaseタイプはないため、すべてのエンティティが除外されます。しかし、Base型オブジェクトのBase型の値のみを返したいのです。
何か案は?