Используйте FirstOrDefaultAsync в запросе при создании экземпляра - PullRequest
0 голосов
/ 06 июня 2019

У меня следующий запрос Entity Framework:

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 ...

Разве я не должен использовать await? Как я могу использовать его в этом запросе?

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете использовать этот подход:

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

измените int на ваш тип возврата.

...