EF返回一个Null对象,但该对象实际上不是null

时间:2012-06-09 18:58:44

标签: entity-framework

我有一个名为Game的实体。此实体具有SubTeam类型的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!= null来检查我的子团队中是否有任何ParentTeam。这有点奇怪......

我可以看到HomeTeam.ParentTeam是NULL,如果我尝试这样做:HomeTeam.ParentTeam.Identifier我将得到一个异常。但是,当我做我的if if statment(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-Statements会告诉我homeTeam.ParentTeam不是NULL。

EF在这做什么?如果EF中的对象真的为NULL,我该怎么检查EF中的对象是否为NULL。

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

0 个答案:

没有答案