私はこれについて同様の記事がここにあると思いますが、全く同じではありません...
私のEFモデルには2つのエンティティがあります - それらをPersonとDeveloperと呼びましょう。後者は前者から継承します。
私はまた開発者にQualificationsと呼ばれる協会を持っています。これはPersonエンティティには表示されません。
コンテキストに対してクエリを作成している場合、どのようにして自動的に開発者の資格を含めますか。
コンテキスト内の従業員から。従業員.Include( "Qualifications")従業員を選択
動作しない... EFは関係が存在しないと文句を言う(それは従業員には存在しないからだと思う - しかし文脈上には開発者エンティティがない、ただ従業員だけ)
私はこの問題に遭遇し、少し実験しました。これが私がLINQ 2 Entityを使って働いているのを見つけたものです。
あなたの例にPerson < - Developer ---- Qualificationsがあるとします。
資格を含む開発者を選択したい場合は、これを行います。
var dev = (from d in context.Persons.OfType<Developer>
.Include("Qualifications")
where d.ID == id
select d).FirstOfDefault();
それでは、PersonとAddressの間に別の関連付けがあるとしましょう。LINQ2 Entityを使用して、選択にAddressを含めることもできます。
var dev = (from d in context.Persons
.Include("Address")
.OfType<Developer>()
.Include("Qualifications")
where d.ID == id
select d).FirstOfDefault();
Typeを変換する前に必要なものを含め、また変換後にも含めたことに注目してください。両方のインクルードは問題なく一緒に動作するはずです。私はこれらの方法をテストしました、そして両方ともうまくいきます。継承が正しく設定されていれば、それらがあなたのために機能することを願っています。
GL。