我的 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