私は次のクラスを持っています(非常に単純化されています):
public class Person
{
public int ID { get; set; }
}
public class Content
{
public int ID { get; set; }
}
public class Image : Content
{
public bool Private { get; set; }
public Person Author { get; set; }
}
public class Tag
{
public int ID { get; set; }
public Content Content { get; set; }
public Person Person { get; set; }
}
が であり、 ではないTags
場所をすべて取得したいと思います( のプロパティを熱心にロードしている間)。これを実行しようとしてもうまくいかない例:Content
Image
Image
Private
Image
var tags = context.Tags
.Include("Content.Author")
.Include("Person")
.Where(t => !((Image)t.Content).Private);
次のエラーが表示されます。
タイプ「コンテンツ」をタイプ「イメージ」にキャストできません。LINQ to Entities は、EDM プリミティブ型または列挙型のキャストのみをサポートします。
そして、Where
節を削除すると:
指定されたインクルード パスが無効です。EntityType 'Content' は、'Author' という名前のナビゲーション プロパティを宣言していません。
このアプローチを実現するには、どのようなクエリやモデル スキーマを変更する必要がありますか?