Automapper и вложенные списки - C#

Узнай цену своей работы

Формулировка задачи:

Не получается конвертировать объекты. Работает ли Automapper со вложенными списками?
using AutoMapper;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace automappertest
{
    public class PairDTO
    {
        public int Num { get; set; }
        public string State { get; set; }
        public string Name { get; set; }
        public string Teacher { get; set; }
        public string Cabinet { get; set; }
    }
 
    public class DayDTO
    {
        public List<PairDTO> Pair { get; set; }
        public string Name { get; set; }
    }
 
    public class SheduleGroupDTO
    {
        public List<DayDTO> Day { get; set; }
        public string Name { get; set; }
    }
 
    public class SheduleDTO
    {
        public long SheduleId { get; set; }
        public DateTime Date { get; set; }
        public bool Type { get; set; }
 
        public List<SheduleGroupDTO> SheduleGroups { get; set; }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            SheduleDTO sheduleDTO = new SheduleDTO()
            {
                Date = DateTime.Now,
                Type = true,
                SheduleGroups = new List<SheduleGroupDTO>()
                {
                    new SheduleGroupDTO()
                    {
 
                         Name = "ИП-403",
                          Day = new List<DayDTO>()
                          {
                               new DayDTO()
                               {
                                   Name = "Понедельник",
                                    Pair = new List<PairDTO>()
                                    {
                                        new PairDTO()
                                        {
                                             Num = 1,
                                             State = "stand",
                                             Name = "Название предмета",
                                             Teacher = "Преподаватель",
                                             Cabinet = "111"
                                        }
                                    }
                               }
                          }
                    }
                }
            };
 
            Mapper.Initialize(cfg => cfg.CreateMap<SheduleDTO, Shedule>()
                         );
            var shedule = Mapper.Map<SheduleDTO, Shedule>(sheduleDTO);
        }
    }
 
    public partial class Shedule
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long SheduleId { get; set; }
 
        public DateTime? Date { get; set; }
 
        public bool? Type { get; set; }

        public virtual List<SheduleGroup> SheduleGroups { get; set; }
 
        public Shedule()
        {
            SheduleGroups = new List<SheduleGroup>();
        }
    }
 
    public partial class SheduleGroup
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long SheduleGroupId { get; set; }
 
        public string Name { get; set; }
 
        public long? SheduleId { get; set; }
 
        public virtual Shedule Shedules { get; set; }
 
        public virtual ICollection<Day> Days { get; set; }
 
        public SheduleGroup()
        {
            Days = new HashSet<Day>();
        }
    }
 
    public partial class Day
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long DayId { get; set; }
 
        public string Name { get; set; }
 
        public long SheduleGroupId { get; set; }
 
        public virtual SheduleGroup SheduleGroups { get; set; }
 
        public virtual ICollection<Pair> Pairs { get; set; }
 
        public Day()
        {
            Pairs = new List<Pair>();
        }
    }
 
    public partial class Pair
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long PairId { get; set; }
 
        public int Num { get; set; }
 
        public string State { get; set; }
 
        public string Lesson { get; set; }
 
        public string Teacher { get; set; }
 
        public string Cabinet { get; set; }
 
        public long? DayId { get; set; }
 
        public virtual Day Days { get; set; }
    }
}
Вылетает исключение: An unhandled exception of type 'AutoMapper.AutoMapperMappingException' occurred in AutoMapper.dll Additional information: Error mapping types. Заранее спасибо Буду благодарен, если напишите, что ещё нужно уточнить, чтобы проблема стала яснее

Решение задачи: «Automapper и вложенные списки»

textual
Листинг программы
namespace automappertest
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using AutoMapper;
 
    public class PairDTO
    {
        public int Num { get; set; }
        public string State { get; set; }
        public string Name { get; set; }
        public string Teacher { get; set; }
        public string Cabinet { get; set; }
    }
 
    public class DayDTO
    {
        public List<PairDTO> Pair { get; set; }
        public string Name { get; set; }
    }
 
    public class SheduleGroupDTO
    {
        public List<DayDTO> Day { get; set; }
        public string Name { get; set; }
    }
 
    public class SheduleDTO
    {
        public long SheduleId { get; set; }
        public DateTime Date { get; set; }
        public bool Type { get; set; }
 
        public List<SheduleGroupDTO> SheduleGroups { get; set; }
    }
 
    internal class Program
    {
        private static void Main(string[] args)
        {
            var sheduleDTO = new SheduleDTO
            {
                Date = DateTime.Now,
                Type = true,
                SheduleGroups = new List<SheduleGroupDTO>
                {
                    new SheduleGroupDTO
                    {
                        Name = "ИП-403",
                        Day = new List<DayDTO>
                        {
                            new DayDTO
                            {
                                Name = "Понедельник",
                                Pair = new List<PairDTO>
                                {
                                    new PairDTO
                                    {
                                        Num = 1,
                                        State = "stand",
                                        Name = "Название предмета",
                                        Teacher = "Преподаватель",
                                        Cabinet = "111"
                                    }
                                }
                            }
                        }
                    }
                }
            };
 
            Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<SheduleDTO, Shedule>();
                cfg.CreateMap<SheduleGroupDTO, SheduleGroup>();
                cfg.CreateMap<DayDTO, Day>();
                cfg.CreateMap<PairDTO, Pair>();
            });
 
            var shedule = Mapper.Map<SheduleDTO, Shedule>(sheduleDTO);
        }
    }
 
    public class Shedule
    {
        public Shedule()
        {
            SheduleGroups = new List<SheduleGroup>();
        }
 
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long SheduleId { get; set; }
 
        public DateTime? Date { get; set; }
 
        public bool? Type { get; set; }
 
 
        public virtual List<SheduleGroup> SheduleGroups { get; set; }
    }
 
    public class SheduleGroup
    {
        public SheduleGroup()
        {
            Days = new HashSet<Day>();
        }
 
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long SheduleGroupId { get; set; }
 
        public string Name { get; set; }
 
        public long? SheduleId { get; set; }
 
        public virtual Shedule Shedules { get; set; }
 
        public virtual ICollection<Day> Days { get; set; }
    }
 
    public class Day
    {
        public Day()
        {
            Pairs = new List<Pair>();
        }
 
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long DayId { get; set; }
 
        public string Name { get; set; }
 
        public long SheduleGroupId { get; set; }
 
        public virtual SheduleGroup SheduleGroups { get; set; }
 
        public virtual ICollection<Pair> Pairs { get; set; }
    }
 
    public class Pair
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long PairId { get; set; }
 
        public int Num { get; set; }
 
        public string State { get; set; }
 
        public string Lesson { get; set; }
 
        public string Teacher { get; set; }
 
        public string Cabinet { get; set; }
 
        public long? DayId { get; set; }
 
        public virtual Day Days { get; set; }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5