Перейти к содержанию

Загрузка одной записи

Напишем код, извлекающий детали рецепта по его идентификатору. Для этого нам нужно использовать LINQ-выражение Where для ограничения запроса одним рецептом, затем преобразовать полученный объект к модели отображения.

public async Task<RecipeDetailViewModel> GetRecipeDetail(int id)
{
    return await _context.Recipes
        .Where(x => x.RecipeId == id)
        .Select(x => new RecipeDetailViewModel
                {
                    Id = x.RecipeId,
                    Name = x.Name,
                    Method = x.Method,
                    Ingredients = x.Ingredients
                        .Select(item => new RecipeDetailViewModel.Item
                                {
                                    Name = item.Name,
                                    Quantity = $"{item.Quantity} {item.Unit}"
                                })
                })
        .SingleOrDefaultAsync();
}

Здесь мы отображаем не только Recipe в RecipeDetailViewModel, но также и ингредиенты для рецепта. При этом EF Core сам решает, как лучше создать SQL-запросы для получения данных.


Последнее обновление : 2 октября 2022 г.
Дата создания : 2 октября 2022 г.

Комментарии

Комментарии