实体框架。包括抛出NullReferenceException

时间:2018-07-20 18:37:10

标签: c# entity-framework asp.net-core-2.0

我有一个非常基本的EF设置,当尝试使用.include填充导航属性时,它会抛出一个奇怪的错误。这是实体模型:

public class LineGroup
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }  
    public ICollection<LineGroupMember> LineGroupMembers { get; set; }
}

public class LineGroupMember
{
    public int ID { get; set; }
    public int Extension { get; set; }
    public string Name { get; set; }
    public int Permissions { get; set; }
    public bool IsLoggedIn { get; set; }

    public int LineGroupID { get; set; }

    internal LineGroup LineGroup { get; set; }
}

我正在通过注入的数据库上下文使用它们,并且可以在不使用导航属性的情况下查询每个属性。我还可以查询LineGroups并包括LineGroupMembers属性,就像这样:

var LineGroups = _context.LineGroups.Include(l => l.LineGroupMembers).ToList();

这会将所有线组加载到一个列表中,该列表具有每个线组正确工作的“ LineGroupMembers”集合。但是,如果我尝试

var lineGroupMembers = _context.LineGroupMembers.Include(m => m.LineGroup).ToList();

我收到“ NullReferenceException”,没有任何有用的详细信息。有什么想法为什么导航属性会以一种方式而不是另一种方式起作用?任何一个数据库表中都没有空值...

1 个答案:

答案 0 :(得分:1)

设置导航属性public

public LineGroup LineGroup { get; set; }

如果它是internal,则EF默认不会选择它。您还可以添加显式的流线型映射,以强制EF对其进行识别。