したがって、クラス階層を持つ型を持つナビゲーションプロパティを持つエンティティがあります。私はThePropertyがタイプChildSubClassであり、InterestingPropertyが特定の値を有する場合、私の質問のいずれかの条件があることで、ParentClassエンティティを照会することができますどのようにEntity Framework - ナビゲーションプロパティの継承型を指定するクエリ
class ParentEntity
{
virtual ChildEntity TheProperty { get; set; }
virtual string AnotherProperty { get; set; }
virtual string AnotherProperty2 { get; set; }
}
class ChildEntity
{
}
class ChildSubEntity : ChildEntity
{
virtual string InterestingProperty { get; set; }
}
(エンティティ名は有罪を保護するために変更しましたか)?私は
ObjectContext context = GetContext();
var result = context.ParentEntities.
Where(e => e.AnotherProperty == AnotherInterestingValue).
Where(e => e.TheProperty is ChildSubEntity).
Where(e => ((ChildSubEntity)e.TheProperty).
InterestingProperty == InterestingValue).
ToList();
を試してみましたが、エラーを取得しました
「タイプをキャストすることができません 『ChildEntityは』 『ChildSubEntity』を入力する。LINQのエンティティへの唯一のエンティティデータモデルのプリミティブ型のキャストをサポートしています。」。
リストを平坦化し、エンティティストアからデータを取得した後でこの条件を適用する必要があります。エンティティが受け入れるようにLINQの形式でこの条件を書くことは可能ですか?
明らかに、これは単純化していますが、私は実際にはLinqKitを使用してクエリ式を構築し、ParentEntityのプロパティ、ParentEntityのプロパティ、その他の条件の条件のいくつかをプログラムで作成していますParentEntityの子エンティティ
しかし、私はParentEntityに関する他の多くの基準を満たしていなければなりません。私はそれを明確にするために質問を編集します。 – SamStephens
'ParentEntity'をフィルタリングするために' SelectMany'に 'Where'を追加してください –
ああ、今は*面白いです。私は演劇を持って、あなたに戻ってきます。 – SamStephens