Извините, если это слишком очевидно, мне было интересно, есть ли разница между двумя блоками кода ниже с точки зрения производительности и количества извлеченных данных?будет ли указывать идентификатор в конце запроса (как в FirstOrDefaultAsync(b => b.BuyModelId == modelId)
), сначала принесет все данные таблицы, а затем сравнит их с идентификатором?
и вызовет функцию Where
в начале (например,этот Where(b => b.BuyModelId == modelId)
) будет оценивать данные по идентификатору и затем вызывать включаемые функции?
Итак, чтобы подвести итог моего вопроса: существует ли определенный порядок выполнения этих операторов?
потому что я волновался, что в моих вызовах к базе данных могут быть дополнительные издержки.
public async Task<BuyModel> GetModelById(int modelId)
{
return await _applicationDbContext.BuyModels
.Where(b => b.BuyModelId == modelId)
.Include(b => b.Buyer)
.Include(b => b.ItemsToBuy).ThenInclude(p => p.Category)
.Include(b => b.ItemsToBuy).ThenInclude(p => p.SalesUser).FirstOrDefaultAsync();
}
public async Task<BuyModel> GetModelById(int modelId)
{
return await _applicationDbContext.BuyModels
.Include(b => b.Buyer)
.Include(b => b.ItemsToBuy).ThenInclude(p => p.Category)
.Include(b => b.ItemsToBuy).ThenInclude(p => p.SalesUser).FirstOrDefaultAsync(b => b.BuyModelId == modelId);
}