Как правильно отобразить карту с помощью AutoMapper - PullRequest
0 голосов
/ 17 марта 2020

Работа на asp. Net Core 3.1.1 MVC + Angular Как правильно сопоставить мои классы с использованием AutoMapper? Я использую Data Transfer Object

Мои модели

  public class Recipe
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public ICollection<RecipePhoto> RecipePhotos {get; set;}
        public User User { get; set; }
        public int UserId { get; set; }
    }
}

В рецепте есть фотографии

  public class RecipePhoto
    {
        public int Id { get; set; }
        public string Url { get; set; }
        public bool IsMain { get; set; }
        public string PublicId { get; set; }
        public Recipe Recipe { get; set; }
        public int RecipeId { get; set; }

    }
}

RecipePhoto может быть основным фото

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 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;}

}

} Dtos

public class FavouriteRecipeToReturn
{
    public int RecipeId { get; set; }
    public RecipeForListDto Recipe { get; set; }
    public int UserId { get; set; }
    public UserForListDto User { get; set; }
}

}

 public class RecipeForListDto
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int PreparationTime { get; set; }
        public string PhotoUrl { get; set; }

    }
}
    public class UserForListDto
    {

        public int Id { get; set; }
        public string Username { get; set; }
        public string PhotoUrl { get; set; }
        public List<FavouriteRecipeToReturn> FavouriteRecipes {get; set;}

    }
}

   public class PhotoForReturnDto
    {
        public int Id { get; set; }
        public string Url { get; set; }
        public bool isMain { get; set; }
        public string PublicId { get; set; }
    }
}

Я создаю профиль

  CreateMap<FavouriteRecipe, FavouriteRecipeToReturn>()
           .ForMember(dest => dest.Recipe.Id, opt => opt
                .MapFrom(src => src.Recipe))
            .ForMember(dest => dest.User.Id, opt => opt
                .MapFrom(src => src.Recipe));

Это ниже работает нормально

CreateMap<Recipe, RecipeForListDto>()
            .ForMember(dest => dest.PhotoUrl, opt => opt
                .MapFrom(src => src.RecipePhotos
                    .FirstOrDefault(p => p.IsMain).Url));

Что я пытаюсь получить это FavRecipes с фотографиями

В ответ у меня появляется ошибка

enter image description here

...