可能是什么原因导致我的集合在.NET核心EF中是空的,以及如何处理它?

时间:2018-03-16 08:37:36

标签: c# .net-core entity-framework-core in-memory

    protected override IQueryable<Car> GetEntities(CarsContext context)
    {
        return context.Cars
            .Include(x => x.Handlebar)
                .ThenInclude(x => x.Horn)
            .Include(x => x.Dashboard)
                .ThenInclude(x => x.Settings)
            .Include(x => x.Dashboard)
                .ThenInclude(x => x.Radio);
    }

以上代码是我在.NET EF Core 2中的代码示例。

显然,当我使用包含时,汽车收藏会保持空白。 当我只返回context.Cars时,我有几百条记录。

我希望无论我是否使用包含,我都会得到相同的结果。如果没有要包含的内容,我希望Navigation属性为空。 这个假设是对的吗?

我已经检查过汽车和导航属性之间是否存在关系,并确认某些情况确实如此,但对于其他人来说,没有任何关系。这可能是原因,但我想再次允许某些导航属性为null我应该更改我的代码吗?

值得一提的是,我在内存存储中使用 EF core 2.0.1 ,因为我只从测试开始。

在随机测试中,仅用于检查,我还断言了所有导航属性:

    //verify db is filled
    using (var context = _carsContextFactory.Create())
    {
        context.Cars.Should().NotBeNullOrEmpty();
        context.Handlebars.Should().NotBeNullOrEmpty();
        context.Horns.Should().NotBeNullOrEmpty();
        context.Radios.Should().NotBeNullOrEmpty();
        //Update: dashboard stays empty, not all are filled.
        context.Dashboards.Should().NotBeNullOrEmpty();
        context.Settings.Should().NotBeNullOrEmpty();
    }

并非所有人都被填满。

我在这里错了吗?可能是什么原因造成的?它是上下文中的空dashboards吗?

更新

我注意到我的代码中有一个错误,其中一个列表中的列表确实为空,这意味着Car的必填字段未正确填充。我仍然觉得非常奇怪的是我没有得到异常,它只返回一个空列表。 这是正常行为吗?

0 个答案:

没有答案