Entity framework 首先使用EF代码,如何包含嵌套数据

Entity framework 首先使用EF代码,如何包含嵌套数据,entity-framework,code-first,Entity Framework,Code First,我有三个实体,定义如下。在我的seed方法中,我只需向每个类添加一条记录,这将导致一个演讲者拥有一个拥有租户的会话 当我具体化扬声器数据时: List<Speaker> speakers = db.Speakers.Include("Sessions").ToList(); List speakers=db.speakers.Include(“Sessions”).ToList(); 我得到了会话数据,但我还希望在会话记录(演讲者记录的一部分)中填充租户 我无法理解语法,无法获

我有三个实体,定义如下。在我的seed方法中,我只需向每个类添加一条记录,这将导致一个演讲者拥有一个拥有租户的会话

当我具体化扬声器数据时:

 List<Speaker> speakers = db.Speakers.Include("Sessions").ToList();
List speakers=db.speakers.Include(“Sessions”).ToList();
我得到了会话数据,但我还希望在会话记录(演讲者记录的一部分)中填充租户

我无法理解语法,无法获取具有租户记录会话的扬声器

我不确定这是否相关,但我序列化了我的“演讲者”,当我取消序列化时,我错过了租户

public DbSet<Tenant> Tenants { get; set; }
public DbSet<Speaker> Speakers { get; set; }
public DbSet<Session> Sessions { get; set; }

[Serializable]
public class Tenant
{
    public int Id { get; set; }
}

[Serializable]
public class Speaker
{
    public int Id { get; set; }

    public virtual List<Session> Sessions { get; set; } 
}

[Serializable]
public class Session
{
    public int Id { get; set; }
    public virtual Tenant Tenant { get; set; }
    public virtual List<Speaker> Speakers { get; set; } 

}
公共数据库集租户{get;set;}
公共DbSet扬声器{get;set;}
公共数据库集会话{get;set;}
[可序列化]
公屋租户
{
公共int Id{get;set;}
}
[可序列化]
公共课演讲者
{
公共int Id{get;set;}
公共虚拟列表会话{get;set;}
}
[可序列化]
公开课
{
公共int Id{get;set;}
公共虚拟租户{get;set;}
公共虚拟列表演讲者{get;set;}
}
***答复:

List<Speaker> speakersAll1 =_context.
                            Speakers.
                            Include(a => a.Sessions.Select(b => b.Tenant)).
                            ToList();
List speakersAll1=\u上下文。
发言者。
包括(a=>a.Sessions.Select(b=>b.Tenant))。
托利斯特();

您需要
包含两个值,如下所示:

 List<Speaker> speakers = db.Speakers.Include("Sessions.Tenant").ToList();
List speakers=db.speakers.Include(“Sessions.Tenant”).ToList();
这将包括
会话
对象中的
租户
,以及原始的
会话
对象

从:

路径包罗万象。例如,如果include调用指示include(“Orders.OrderLines”),则不仅会包括订单行,还会包括订单


您还可以使用System.Data.Entity添加
包含
与lambda表达式一起使用,这样您就不必依赖魔术字符串。

谢谢,我通过问题更新了内容,以包含对我有用的内容。我首先包括了Session,不过我猜这是没有必要的。我会在可能的时候标记为答案。@PeterKellner我看到您使用了
System.Data.Entity
,这通常比依赖魔法字符串要好。希望我能有所帮助。另外:如果你真的使用了其他方法来解决它,你应该把它作为一个答案发布。