1

我有一个名为 Game 的实体。该实体有 2 个子团队类型的属性。subTeam 有一个 Team 类型的 Property(它是子团队的 parentteam)。

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

稍后我用这段代码通过 EF 加载游戏..

        return contex.Games
            .Include(t => t.Serie)
            .Include(t => t.AwayTeam)
            .Include(t => t.HomeTeam)
            .SingleOrDefault(g => g.Identifier == gameIdentifier);

它工作得很好,我得到了我的游戏和我的子团队......但我知道想通过检查 HomeTeam.ParentTeam 是否有任何 ParentTeam 来检查我的子团队!= null。这里有一些奇怪的东西..

我可以看到 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。

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

4

0 回答 0