EF6不选择双深ICollection

时间:2016-01-11 01:14:07

标签: c# entity-framework

我在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

0 个答案:

没有答案