我在EF中有三个类,基本上设置如下(省略了多余的字段):
public class TopLevel
{
[Key]
public Guid TopLevelId { get; set; }
public Guid MidLevelId { get; set; }
public virtual MidLevel { get; set; }
}
public class MidLevel
{
[Key]
public Guid MidLevelId { get; set; }
public virtual ICollection<LowLevel> LowLevels { get; set; }
}
public class LowLevel
{
[Key]
public Guid LowLevelId { get; set; }
public Guid MidLevelId { get; set; }
}
我使用此代码生成了我的表,并根据我的期望正确地将记录插入表中 - 一个TopLevel,一个与TopLevel关联的MidLevel和一个与MidLevel关联的LowLevel。当我对我的TopLevel表进行查询时,例如:
var top = context.TopLevels.First(topLevel => topLevel.TopLevelId == someTopLevelId);
检索TopLevel
项及其虚拟MidLevel
成员,但MidLevel项目的LowLevel
项目集合为空。数据库 包含记录,但未检索到。
我的注释是否有问题?我需要做.Include()
或类似的东西吗?
编辑:我正在查询我的顶级:
var top = context.TopLevels.FirstOrDefault(t => t.TopLevelId == myTopGuid);
我也尝试直接查询中级,如下所示:
Guid midId = (value from database here);
var mid = context.MidLevels.First(m => m.MidLevelId == midId);
在这两种情况下,top.MidLevel.LowLevels或mid.LowLevels都有.Count == 0
。