如何让Entity Framework以1:1的关系执行连接查询?

时间:2015-11-21 14:36:01

标签: c# entity-framework

我在Entity Framework中有1:1的关系,如下所示:

public class Channel
{
    public int ID { get; set; } 
    public string Title { get; set; }
    public ExternalChannel ExternalChannel { get; set; }
 }

public class ExternalChannel
{
    [Key, ForeignKey("Channel")]
    public int ChannelID { get; set; }
    public string Something{ get; set; }
    public Channel Channel { get; set; }
}

正确创建db模式。当我尝试使用以下渠道获取频道时:

var channels = await dbContext.Channels.ToListAsync();

我无法访问ExternalChannel,因为它未被检索。 SQL查询未在这些表上使用连接。

有没有办法让Entity Framework执行连接查询,以便我可以轻松访问所有数据?我可以自己加入,但我怀疑还有更好的方法。

谢谢大家的帮助!

2 个答案:

答案 0 :(得分:2)

因为默认情况下它会延迟加载,因此除非特别说明,否则不会加载相关实体。您可以使用设计器中的Include属性或使用实体本身Include()的代码加载它,例如

var channels = await dbContext.Channels.Include(x => x.ExternalChannel ).ToListAsync();

答案 1 :(得分:0)

您没有告诉您的查询获取ExternalChannel数据,请尝试使用Include告诉EF eager load

dbContext.Channels.Include(c => c.ExternalChannel)