首页 > 解决方案 > 在 Linq 查询中返回空的可枚举作为属性会导致错误

问题描述

为了提高从数据库中检索数据的性能,我想根据某些条件创建一个查询。我创建查询的代码非常复杂,所以我将尝试给出一个我认为足以解释问题的简单示例。

我有一个实体,例如汽车。对于这辆车,我想检索安装在其中的所有选项。我已经在内存中有这种类型的汽车的配置。所以当我知道没有可用的选项时,我不想在数据库中查询已安装的选项。应在一次查询数据库中检索所有数据。

我到目前为止的代码

IQueryable<Option> optionsQuery;
if  (typeOfCar.ConfiguredOptions.Any())
   return from context.Options select new Option{...};
else
   return Enumerable.Empty<Option>().AsQueryable();

var cars = from car in context.Cars
select new Car
{
   Model = car.Model,
   Options = optionsQuery.Where(...)
}

当我执行此查询并且选项可用时,我从数据库中获取数据。但是,当没有可用选项时,实体框架会引发以下错误:

无法处理类型“选项”,因为它没有到值层的已知映射。

我似乎找不到任何有关此错误的确切含义或抛出原因的信息。有人可以帮帮我吗?

标签: c#linq

解决方案


推荐阅读