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
的必填字段未正确填充。我仍然觉得非常奇怪的是我没有得到异常,它只返回一个空列表。 这是正常行为吗?