Я пытаюсь сопоставить некоторые сущности с DTO, а некоторые DTO с сущностями с помощью AutoMapper 8.0.0.
Это мое определение AutoMapper для сопоставления сущности с DTO. Я смог сопоставить сущности с DTO по определению ниже.
Но когда я пытался сопоставить DTO с сущностями, поменяв Recipe и RecipeDTO, я не смог отобразить. Я получил ошибку.
Как определить инициализацию autopper, чтобы можно было это реализовать?
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Recipe, RecipeDTO>()
.ForMember(dest => dest.Directions, opt => opt.MapFrom(src =>
src.Directions))
.ForMember(dest => dest.Ingredients, opt => opt.MapFrom(src =>
src.Ingredients))
.ForMember(dest => dest.Categories, opt => opt.MapFrom(src =>
src.Categories.Select(i => i.Name)));
});
Это мои сущности и DTO'S
public class Recipe
{
public override int Id { get; set; }
public string Title { get; set; }
public int DirectionId { get; set; }
public virtual Direction Directions { get; set; }
public override DateTime CreatedDate { get; set; }
public override string CreatedBy { get; set; }
public override DateTime? ModifiedDate { get; set; }
public override string ModifiedBy { get; set; }
public override bool IsDeleted { get; set; }
public virtual ICollection<Category> Categories{get;set;}
public virtual ICollection<Ingredient> Ingredients{get; set;}
}
public class Direction
{
public override int Id { get; set; }
public string Step { get; set; }
public int RecipeId { get; set; }
public virtual Recipe Recipe { get; set; }
public override DateTime CreatedDate { get; set; }
public override string CreatedBy { get; set; }
public override DateTime? ModifiedDate { get; set; }
public override string ModifiedBy { get; set; }
public override bool IsDeleted { get; set; }
}
public class Category
{
public override int Id { get; set; }
public string Name { get; set; }
public override DateTime CreatedDate { get; set; }
public override string CreatedBy { get; set; }
public override DateTime? ModifiedDate { get; set; }
public override string ModifiedBy { get; set; }
public override bool IsDeleted { get; set; }
public virtual ICollection<Recipe> Recipes { get; set;}
}
public class Ingredient
{
public override int Id { get; set; }
public string Name { get; set; }
public override DateTime CreatedDate { get; set; }
public override string CreatedBy { get; set; }
public override DateTime? ModifiedDate { get; set; }
public override string ModifiedBy { get; set; }
public override bool IsDeleted { get; set; }
public int AmountId { get; set; }
public virtual Amount Amount { get; set; }
public int RecipeId { get; set; }
public virtual Recipe Recipe { get; set; }
}
public class Amount
{
public override int Id { get; set; }
public string Quantity { get; set; }
public string Unit { get; set; }
public override DateTime CreatedDate { get; set; }
public override string CreatedBy { get; set; }
public override DateTime? ModifiedDate { get; set; }
public override string ModifiedBy { get; set; }
public override bool IsDeleted { get; set; }
public int IngredientId { get; set; }
public virtual Ingredient Ingredient { get; set; }
}
public class RecipeDTO
{
public string Title { get; set; }
public List<string> Categories { get; set; }
public List<IngredientDTO> Ingredients { get; set; }
public DirectionDTO Directions { get; set; }
}
public class DirectionDTO
{
public string Step { get; set; }
}
public class IngredientDTO
{
public string Name { get; set; }
public AmountDTO Amount { get; set; }
}
public class AmountDTO
{
public string Quantity { get; set; }
public string Unit { get; set; }
}