C# 实体框架。包括引发NullReferenceException

C# 实体框架。包括引发NullReferenceException,c#,entity-framework,asp.net-core-2.0,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

我有一个非常基本的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; }
}
这会将所有线组加载到一个列表中,该列表中的每个线组都有一个正常工作的“LineGroupMembers”集合。然而,如果我尝试

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

我得到的“NullReferenceException”没有任何有用的细节。你知道为什么导航属性会以一种方式工作而不是另一种方式吗?两个数据库表中都没有空值…

将导航属性
公开

public LineGroup LineGroup { get; set; }

如果它是
internal
,默认情况下EF不会拾取它。您还可以添加显式流畅映射,以强制EF识别它。

将您的导航属性
公开

public LineGroup LineGroup { get; set; }

如果它是
internal
,默认情况下EF不会拾取它。您还可以添加显式的fluent映射来强制EF识别它。

也可以工作,尽管内部映射最初的用途是防止json序列化产生自引用错误。出于某种原因,正常的“SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore”无法解决此问题。但是,将[jsonignore]公开后添加到LineGroup属性可以满足我的需要。谢谢虽然内部的最初用途是防止json序列化中的自引用错误,但它仍然有效。出于某种原因,正常的“SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore”无法解决此问题。但是,将[jsonignore]公开后添加到LineGroup属性可以满足我的需要。谢谢