Entity Framework - .Includeを使用した継承

entity-framework

質問

私はこれについて同様の記事がここにあると思いますが、全く同じではありません...

私の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。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ