我有一个非常基本的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”,没有任何有用的详细信息。有什么想法为什么导航属性会以一种方式而不是另一种方式起作用?任何一个数据库表中都没有空值...
答案 0 :(得分:1)
设置导航属性public
public LineGroup LineGroup { get; set; }
如果它是internal
,则EF默认不会选择它。您还可以添加显式的流线型映射,以强制EF对其进行识别。