Работа над. NET Core 3.1.1 MVC + Angular
У меня странная проблема с отображением любимых рецептов пользователя.
Когда я вызываю getFavRecipes в моем Ответ У меня есть два любимых рецепта для пользователя (идентификатор 1), который такой же, как в базе данных.
Затем я вызываю getUser (идентификатор 1 ) и favRecipes равны нулю ..
Мой код:
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public ICollection<UserPhoto> UserPhotos {get; set;}
public ICollection<Recipe> Recipes {get; set;}
public ICollection<FavouriteRecipe> FavRecipes {get; set;}
}
public class FavouriteRecipe
{
public int RecipeId { get; set; }
public Recipe Recipe { get; set; }
public int UserId { get; set; }
public User User { get; set; }
public DateTime DateLiked { get; set; }
}
public class Recipe
{
public int Id { get; set; }
public string Name { get; set; }
public string Ingredients { get; set; }
public int PreparationTime { get; set; }
public string Description { get; set; }
public DateTime DateAdded { get; set; }
public ICollection<RecipePhoto> RecipePhotos {get; set;}
public User User { get; set; }
public int UserId { get; set; }
}
UserRepository
public async Task<User> GetUser(int id)
{
var user = await _context.Users
.Include(p => p.UserPhotos)
.Include(f=>f.FavRecipes)
.Include(r => r.Recipes)
.ThenInclude(r => r.RecipePhotos)
.FirstOrDefaultAsync(r => r.Id == id);
return user;
}
public Task<List<Recipe>> GetUserFavRecipes(int userId)
{
var userFavRecipes = _context.FavouriteRecipes
.Include(x => x.Recipe)
.Where(x => x.UserId == userId)
.Select(x => x.Recipe)?.ToListAsync();
return userFavRecipes;
}
Контроллер
[HttpGet("{id}", Name = "GetUser")]
public async Task<IActionResult> GetUser(int id)
{
var user = await _userRepository.GetUser(id);
var userToReturn = _mapper.Map<UserForDetailDto>(user);
return Ok(userToReturn);
}
[HttpGet("{id}/favouriteRecipes")]
public async Task<IActionResult> GetUserFavRecipes(int id)
{
var userFavRecipes = await _userRepository.GetUserFavRecipes(id);
return Ok(userFavRecipes);
}
@ Liero