Работа с библиотекой AutoMapper - C#

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

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

Помогите разобраться с AutoMapper'ом. Вот допустим есть 2 следующих класса в Entity Framework:
public class User
{
   public int ID {get; set;}
   public string Name {get; set;}
   public int Age {get; set;}
   public int PositionId {get; set;}
}
 
public class Position
{
   public int ID {get; set;}
   public string Description {get; set;}
}
А мне нужно получить следующий класс:
public class UserUpdate
{
   public int ID {get; set;}
   public string Name {get; set;}
   public int Age {get; set;}
   public string Description {get; set;}
}
Как это можно сделать? В гугле искал, но не понял как это сделать. Спасибо
Понятно, что это можно сделать обычным Include и перебрать в новую коллекцию UserUpdate, но меня интересует другой способ

Решение задачи: «Работа с библиотекой AutoMapper»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using AutoMapper;
using ConsoleApplication14.data;
using ConsoleApplication14.Mapping;
using AutoMapper.QueryableExtensions;
 
namespace ConsoleApplication14
{
    class Program
    {
        static void Main()
        {
            AutoMapperConfig.Config();
 
            if (File.Exists("MyDateBase.db"))
            {
                File.Delete("MyDateBase.db");
            }
 
 
            using (var db = new SqliteContext("MyDateBase.db"))
            {
 
                var position = new Position()
                {
                    Description = "Best Programmer"
                };
 
                db.Positions.Add(position);
                db.SaveChanges();
 
               var user = new User()
               {
                   Name = "Kos",
                   Age = 23,
                   PositionId = position.Id
               };
                db.Users.Add(user);
                db.SaveChanges();
            }
 
            using (var db = new SqliteContext("MyDateBase.db"))
            {
                var userUpdates = db.Users.ProjectTo<UserUpdate>().ToList();
 
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
 
                Console.WriteLine(string.Join(Environment.NewLine, userUpdates));
            }
 
            Console.ReadKey();
        }
    }
 
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public int PositionId { get; set; }
        public virtual Position Position { get; set; }
    }
 
    public class Position
    {
        public Position()
        {
            Users = new HashSet<User>();
        }
        public int Id { get; set; }
        public string Description { get; set; }
        public ICollection<User> Users { get; set; }
    }
    public class UserUpdate : IHaveCustomMappings
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Description { get; set; }
        public void CreateMappings(IMapperConfiguration configuration) => configuration.CreateMap<User, UserUpdate>()
            .ForMember(m => m.Description, opt => opt.MapFrom(u => u.Position.Description));
 
        public override string ToString()
        {
            return $"Id: {Id}, Name: {Name}, Age: {Age}, Description: {Description}";
        }
    }
}

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы