Entity framework EF返回一个空对象,但该对象不是真的空

Entity framework EF返回一个空对象,但该对象不是真的空,entity-framework,Entity Framework,我有一个名为Game的实体。此实体有2个类型为SubTeam的属性。子团队有一个类型为Team的属性,它是子团队的父团队 现在我创建了子团队和游戏,并将其保存到数据库中,与父团队没有关系,我不知道创建子团队时子团队应该属于哪个团队 稍后,我用这个代码通过EF加载游戏 return contex.Games .Include(t => t.Serie) .Include(t => t.AwayTeam)

我有一个名为Game的实体。此实体有2个类型为SubTeam的属性。子团队有一个类型为Team的属性,它是子团队的父团队

现在我创建了子团队和游戏,并将其保存到数据库中,与父团队没有关系,我不知道创建子团队时子团队应该属于哪个团队

稍后,我用这个代码通过EF加载游戏

        return contex.Games
            .Include(t => t.Serie)
            .Include(t => t.AwayTeam)
            .Include(t => t.HomeTeam)
            .SingleOrDefault(g => g.Identifier == gameIdentifier);
它工作得很好,我得到了我的比赛和我的小组。。。但我知道我想通过检查HomeTeam.ParentTeam!=无效的还有一件奇怪的事

我可以看到HomeTeam.ParentTeam为NULL,如果我尝试这样做:HomeTeam.ParentTeam.Identifier,我将得到一个异常。但是当我做我的if陈述时,HomeTeam.ParentTeam!=null,那么我将返回True,但这不是真的HomeTeam.ParentTeam为null

我在VS2011的即时窗口中执行了一些行。为了获得更多信息,我得到了以下结果:

homeTeam.ParentTeam
null
homeTeam.Users
null
(homeTeam.ParentTeam == null ? "True" : "False")
"False"
(homeTeam.Users == null ? "True" : "False")
"True"
为什么我的hometeam.ParentTeam说它为NULL,如果我尝试使用它,我会得到一个异常,但是if语句会告诉我hometeam.ParentTeam不是NULL

EF在这里干什么?我如何检查EF中的一个对象是否为NULL,而实际上它是NULL


我在我的实体中不使用虚拟,因此这不是代理问题。

如果要求即时窗口打印homeTeam.ParentTeam,它会说什么?它说NULL上面的值显示我在即时窗口中打印的内容和响应,因此如果我只打印homeTeam.ParentTeam,则响应为NULL。但是如果我打印homeTeam.ParentTeam==null?正确:错误,那么响应是错误的。。。