0

を使用して、親テーブルからレコードを取得:のみ、私は(チャイルズが2以上のもの)私のプロジェクトのエンティティを次しているEntity Frameworkの

enter image description here

するだけで、親テーブルからレコードをロードするためにどのような方法があります余分な結合なしで)、私はTPT私の継承のための戦略を使用したときEFを使用して?以下のコードによって

var result = ctx.Parents.Find(5); 
//or 
var result = ctx.Parents.OfType<Parent>().Find(5); 

EFは巨大なSQLクエリを生成します! (私の本当のモデルでは、私は2つのチャイルズ以上のものを持っている)

+0

'var result = ctx.Parents.Find(5);' – CodeNotFound

+0

@CodeNotFound:ええ、結果は変わりません。 – Masoud

+0

多分あなたはSQL Viewを見なければならないでしょう:) – CodeNotFound

答えて

2

あなたはctx.Parentsctx.Parents.OfType<Parent>()を照会するかどうか、あなたは常に(この場合には、Id == 5)の条件を満たしすべてParentのエンティティを取得するために、EFをお願いします。 EFは、これがサブタイプのサブタイプであるかサブタイプでないサブタイプであるかを事前に知ることができないので、常に完全なクエリを実行しなければならない。Parent

TPTはクエリに適したモデルではありません。私はそれを使用しません(そして、できるだけ継承を避けてください)。

+0

より継承性の高い戦略をお勧めしますか? – Masoud

+0

他の2つのTPHとTPCがこの点で優れています。 –

関連する問題