2016-03-21 6 views
1

Ich habe folgende POCO Klassen definiert, die Lautsprecher zu Themen in einer many-to-many-Beziehung Karte:EF6 nicht auf Vielen bevöl Eigenschaft Viele

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; } 
    } 

Allerdings, wenn ich die Datenbank abfragen und Rückkehr aus WebAPI etwa so:

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

ich in der Themen-Eigenschaft NULL erhalten (siehe unten):

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

Sollte nicht Die TalkTheme-Eigenschaft muss ausgefüllt werden? Es zeigt derzeit nur NULL und ich habe keine Ahnung, wie man das bekommt.

Antwort

1

Weil Sie eine andere Ebene laden müssen. Gehen Sie wie folgt in Ihrem Include Aufruf:

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

Wenn Sie wollen weitere Beispiele sehen, wie mehrere Ebenen in einer Abfrage zu laden, überprüfen Sie die Bemerkungen Abschnitt in diesem msdn page.

Verwandte Themen