创建实例时在查询中使用FirstOrDefaultAsync

时间:2019-06-06 16:17:02

标签: entity-framework-core linq-to-entities

我有以下实体框架查询:

if (!empty($_FILES['chooseFileImage']['tmp_name'])) {
  // if true this condition you can update image
} else {
  // if false then not update image filed
}

我尝试将IQueryable<Unit> units = context.Units; Product product = new Product { Conversions = model.Conversions.Select(y => new Conversion { UnitId = units .Where(z => z.Name == y.Unit) .Select(z => z.Unit.Id) .FirstOrDefault(), Value = y.Value }).ToList(), Name = model.Name } 之前的await用作:

units.Where( ...

这是不允许的,因为它位于Product product = new Product { Conversions = model.Conversions.Select(y => new Conversion { UnitId = await units .Where(z => z.Name == y.Unit) .Select(z => z.Unit.Id) .FirstOrDefaultAsync(), Value = y.Value }).ToList(), Name = model.Name } 中...

我不应该使用new Conversion吗?如何在此查询中使用它?

1 个答案:

答案 0 :(得分:0)

您可以使用这种方法:

unitId = await Task.Factory.Start<int>(()=>{
  return units.Where(z => z.Name == y.Unit)
  .Select(z => z.Unit.Id)
  .FirstOrDefault();
})

将int更改为您的退货类型。