2016-03-21 8 views
1

に多くのプロパティを移入ないI持って、多対多の関係でテーマに講演をマッピング定義された以下のPOCOクラス:EF6は多くの

public class Speaker 
{ 
     public int Id { get; set; } 
     public string Firstname { get; set; } 
     public string Surname { get; set; } 

     public virtual ICollection<SpeakerTalkTheme> TalkThemes { get;set; } 
} 

public class SpeakerTalkTheme 
    { 
     [Key, Column(Order = 0)] 
     public int TalkThemeId { get; set; } 

     [Key, Column(Order = 1)] 
     public int SpeakerId { get; set; } 

     public TalkTheme TalkTheme { get; set; } 


     public Speaker Speaker { get; set; } 
    } 
} 

public class TalkTheme 
    { 
     public int Id { get; set; } 
     public string Theme { get; set; } 

     public int Length { get; set; } 

     public virtual ICollection<ThemeTag> ThemeTags { get; set; } 
     public virtual ICollection<SpeakerTalkTheme> TalkThemes { get;set; } 
    } 

をしかし、私は、データベースを照会し、WebAPIのから戻ったときそのような:

public class SpeakerController : ApiController 
    { 
     public IEnumerable<Speaker> Get() 
     { 
      var db = new MyDbContext(); 
      var model = db.Speakers.Include(x => x.TalkThemes).ToList(); 
      return model; 
     }  
    } 

私は(下記参照)のテーマプロパティにNULLを取得:

[ 
    { 
    "TalkThemes": [ 
     { 
     "TalkThemeId": 1, 
     "SpeakerId": 1, 
     "TalkTheme": null 
     } 
    ], 
    "Id": 1, 
    "Firstname": "Joe", 
    "Surname": "Bloggs" 
    } 
] 

べきではありませんTalkThemeプロパティに値が設定されますか?現在のところ、NULLを表示しているだけで、これをどうやって読み込むのか分かりません。

答えて

1

別のレベルを読み込む必要があるためです。あなたのInclude呼び出しで次の操作を行います

//... 
var model = db.Speakers.Include(x => x.TalkThemes.Select(tt=>tt.TalkTheme)).ToList(); 

クエリでのいくつかのレベルをロードするためにどのように多くの例を見たい場合は、このmsdn page備考セクションをご確認ください。