0

我的 Select 有问题。

但首先,我们有 3 个表:例如:

库存、物品、设备属性

库存有项目。并且其中一些项目具有 device_properties。

项目和 device_properties 不会改变。在这种情况下,我们将修复 device_properties 包含在项目中。

现在在调用中我们想要获取库存,并在请求中包含从项目到库存条目的包含。

现在的问题是,如果我们请求它,我们会发送像 x.items.device_properties.name 这样的数据,但这可以为空。如果这是 null 它不起作用,因为:

nullable object must have a value

如果我确实喜欢以下内容,他需要做长:

deviceName = x.items.device_properties == null ? "" : x.items.device_properties.name
var items = db.inventory.Where(x => x.itemName== itemName).Include(i => i.items).Select(x => new
{
  itemId = x.id,
  x.itemName,
  deviceName = x.items.device_properties.name
}).AsNoTracking().ToList();

此时我得到消息,可空值需要一个值。如果我这样做:

var items = db.inventory.Where(x => x.itemName== itemName).Include(i => i.items).Select(x => new
{
  itemId = x.id,
  x.itemName,
  deviceName = x.items.device_properties == null ? "" : x.items.device_properties.name
}).AsNoTracking().ToList();

查询需要更长的时间

信息

System.InvalidOperationException: Nullable object must have a value
4

1 回答 1

0

另外device_properties不应该null,你应该检查items属性不应该null

var items = db.inventory.Where(x => x.itemName== itemName).Include(i => i.items).Select(x => new
{
  itemId = x.id,
  x.itemName,
  deviceName = x.items == null || x.items.device_properties == null ? "" : x.items.device_properties.name
}).AsNoTracking().ToList();
于 2021-10-16T07:45:50.227 回答