Asp.net Core AutoMapper and Enums Error mapping types

I'm developing a web api with asp.net core 6. I am using the library Automapper. When I try to convert my class dto to my class of Entity, i receive an error, because automapper fails to recognize and convert enums.

the error:

AutoMapper.AutoMapperMappingException: Error mapping types.

Mapping types: CreateRequestUserDto -> User api.DTOs.CreateRequestUserDto -> api.Model.Entity.User

Type Map configuration: CreateRequestUserDto -> User api.DTOs.CreateRequestUserDto -> api.Model.Entity.User

Destination Member: Role

---> AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.

Mapping types: EnumRoles -> Role api.Utilitis.Enum.EnumRoles -> api.Model.Entity.Role

entity class User.cs:

namespace api.Model.Entity;
    public class User
    {
        public int Id { get; set; }
        //other attributes
        public virtual Role Role { get; set; }
    

    }

entity class Role.cs:

using api.Utilitis.Enum;
    public class Role
    {
        public int Id { get; set; }
        [Column("Name", TypeName = "nvarchar(50)")]
        public EnumRoles Name { get; set; }
        public ICollection<User> Users{ get; set; }
    }
}

dto class CreateRequestUserDto.cs:

using api.Utilitis.Enum;

namespace api.DTOs;
    public class CreateRequestUserDto
    {
        //other attributes
        public EnumRoles Role { get; set; }
     
    }

AutoMapperProfile.cs:

   public AutoMapperProfile()
   {
      CreateMap<User, CreateRequestUserDto>()
      .ForMember(cr => cr.Role, opt => opt.MapFrom(usr => usr.Role.Name)).ReverseMap();
    //other codes
       
   }

Enum.cs:

:
namespace api.Utilitis.Enum;

public enum EnumRoles { 
    Administrator = 1, 
    Operator = 2 
}

UsersController.cs :

   public async Task<ActionResult> Create([FromForm] CreateRequestUserDto request)
    {  
       
        var user = _mapper.Map<User>(request);
        var result = await _userService.CreateUser(user);
        return Ok(new { message = result.Message });
    }

ServiceUser.cs

  public async Task<(bool Success, string Message)> CreateUser(User user)
        {
            try
            {
               

                _context.Users.Add(user);
               await _context.SaveChangesAsync();               

                return (true, "User added");

            } catch(Exception ex)
            {
                return (false, ex.Message);
            }


        }

what am I wrong?



Comments

Popular posts from this blog

Spring Elasticsearch Operations

Network Error and Timeout on Authorize.net JS

Object oriented programming concepts (OOPs)