我有一个名为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。
我不在我的实体中使用虚拟,因此它不是代理问题。