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

Entity framework core 创建实例时在查询中使用FirstOrDefaultAsync,entity-framework-core,linq-to-entities,Entity Framework Core,Linq To Entities,我有以下实体框架查询: 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)

我有以下实体框架查询:

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
}
这是不允许的,因为它位于
新转换


我是否应该使用
wait
?如何在此查询中使用它?

您可以使用以下方法:

unitId = await Task.Factory.Start<int>(()=>{
  return units.Where(z => z.Name == y.Unit)
  .Select(z => z.Unit.Id)
  .FirstOrDefault();
})
unitId=wait Task.Factory.Start(()=>{
返回单位。其中(z=>z.Name==y.Unit)
.Select(z=>z.Unit.Id)
.FirstOrDefault();
})

将int更改为您的返回类型。

您可以使用以下方法:

unitId = await Task.Factory.Start<int>(()=>{
  return units.Where(z => z.Name == y.Unit)
  .Select(z => z.Unit.Id)
  .FirstOrDefault();
})
unitId=wait Task.Factory.Start(()=>{
返回单位。其中(z=>z.Name==y.Unit)
.Select(z=>z.Unit.Id)
.FirstOrDefault();
})
将int更改为您的返回类型