我在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执行连接查询,以便我可以轻松访问所有数据?我可以自己加入,但我怀疑还有更好的方法。
谢谢大家的帮助!
答案 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)