我有三个实体,如下所述。在我的种子方法中,我通常会在每个类中添加一条记录,这会导致发言人拥有一个拥有租户的会话。
当我通过以下方式实现演讲者数据时:
List<Speaker> speakers = db.Speakers.Include("Sessions").ToList();
我获得了会话数据,但我也希望在会话记录中填充租户(这是扬声器记录的一部分)。
我无法找出让发言人拥有租户记录的发言人的语法。
我不确定这是否相关,但我序列化我的发言人&#34;当我将其反序列化时,我错过了租客。
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; }
}
***回答:
List<Speaker> speakersAll1 =_context.
Speakers.
Include(a => a.Sessions.Select(b => b.Tenant)).
ToList();
答案 0 :(得分:1)
您需要Include
这两个值,例如:
List<Speaker> speakers = db.Speakers.Include("Sessions.Tenant").ToList();
这将包括Tenant
个对象的Session
以及原始Session
个对象。
来自ObjectQuery.Include documentation:
路径包罗万象。例如,如果包含调用表示包含(&#34; Orders.OrderLines&#34;),则不仅包括OrderLines,还包括订单。
您还可以添加using System.Data.Entity;
以使用带有lambda表达式的Include
,这样您就不必依赖魔术字符串。