Linq投影中的空检查[EF 7 RC1]

时间:2016-04-13 17:07:29

标签: c# entity-framework linq

当我运行此投影时,计数等于我的数据库中的人数:

int peopleProjectionCount  = _db.People.Count();

然而,当我运行此投影并获得计数时,我得到的只是TitleType和SuffixType不为空的记录的计数。

int peopleProjectionCount  = _db.People
            .Select(p => 
                new PersonViewModel()
                {
                    AgeInMonths = p.AgeInMonths,
                    Title = p.TitleType == null ? null : p.TitleType.Title,
                    FirstName = p.FirstName,
                    NickName = p.NickName,
                    MiddleName = p.MiddleName,
                    LastName = p.LastName,
                    Suffix = p.SuffixType == null ? null : p.SuffixType.Suffix,
                    DateOfBirth = p.DateOfBirth,
                    DateOfDeath = p.DateOfDeath
                }).Count();

为了解决这个问题,投影只返回Count。我真正想做的是返回PersonViewModel的列表。如果一个人没有标题或后缀,我仍然希望包含该记录;我只是希望视图模型上的属性为null。在这里,似乎只是忽略了那些记录。

这是预期的行为吗?如果是这样,我如何在这样的投影中使用空值检查而不忽略已检查属性为空的记录?

1 个答案:

答案 0 :(得分:1)

正如Ivan所说,这是目前计划在RC2中修复的EF 7中的一个错误。

我能够连接一个分析器并看到报告的相同问题以及Stilgar怀疑的内部连接。

didMoveToView