2016-10-27 5 views
2

エンティティフレームワークでInclude()に問題があります。C#LINQインクルード

私はTravel_RequestEmployeeから従業員のプロパティを含めるいくつかのエンティティ

public partial class Travel_RequestEmployee 
{ 
public virtual Traveler Traveler { get; set; } 
} 

public abstract partial class Traveler{ 
} 

public partial class Traveler_Employee : Traveler 
{ 
public virtual Employee Employee { get; set; } 
} 

を持っています。 Include()のように働く方法はありますか?

_context.Travel_RequestEmployee.Include(x => 
x.Traveler.OfType<Traveler_Employee>().Include(e => e.Employee)); 

私を助けてください。

+0

私はこれがEF ....データベースモデリングでどのように機能するか分かっています。論理をどのように定義するかについて、より多くのコードを表示できますか?すなわち、EF(エンティティフレームワーク)はあなたの意図を知らないでしょう。これがEFであれば、私はあなたの論理的なデータ関係を提案する必要があります。それはEFが構造について知っていることを定義するもので、あなたが何をしようとしているのか分からないことを定義します。これがEFでない場合、インクルードの実装に関してより多くのコードを提案します。私は間違っている可能性がある! – Seabizkit

答えて

0

間違ったタイプを使用しています。

public partial class Travel_RequestEmployee 
{ 
public virtual Traveler_Employee Traveler { get; set; } 
} 

通知すると、Traveler_Employeeに切り替わります。トラベラーは基本クラスです。

+0

いいえDBの私の関係です。 Db =>私はこのように設計しました:Travel_RequestEmployee 1:1 Travelerテーブル。トラベラー1:1 Traveler_Employee、トラベラーテーブル1:1を別のテーブル –

+0

に変更しても、正しいタイプに変更する必要があります。基本型は継承されるクラスを知らない。それはまったく逆です。あなたのクラスは、それがTravelerによって継承されていることを知っています。 –

+0

この場合。新しいテーブルTraveler_Candidate:Travelerがある場合。この時点で、Travel_RequestEmployeeは新しいプロパティTraveler_Candidateを持ちます。したがって、それは前に私のデザインを破るでしょう –