.net EF6未在多对多上填充属性

.net EF6未在多对多上填充属性,.net,entity-framework,.net,Entity Framework,我定义了以下POCO类,它们将演讲者映射到多对多关系中的主题: public class Speaker { public int Id { get; set; } public string Firstname { get; set; } public string Surname { get; set; } public virtual ICollection<SpeakerTalkTheme> TalkTheme

我定义了以下POCO类,它们将演讲者映射到多对多关系中的主题:

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

TalkTheme属性不应该填充吗?它当前显示为空,我不知道如何填充它。

因为您需要加载另一个级别。在您的
通话中执行以下操作:

 //...
 var model = db.Speakers.Include(x => x.TalkThemes.Select(tt=>tt.TalkTheme )).ToList();
如果您想了解更多如何在查询中加载多个级别的示例,请查看本部分的备注部分

[
  {
    "TalkThemes": [
      {
        "TalkThemeId": 1,
        "SpeakerId": 1,
        "TalkTheme": null
      }
    ],
    "Id": 1,
    "Firstname": "Joe",
    "Surname": "Bloggs"
  }
]
 //...
 var model = db.Speakers.Include(x => x.TalkThemes.Select(tt=>tt.TalkTheme )).ToList();