AutoMapper, Ошибка при вложенности - C#
Формулировка задачи:
Доброго времени суток.
Сразу перейду к делу - через nuget поставил Automapper и попытался настроить мэппинг.
Необходимо произвести мэппинг из
В итоге в обоих случаях получаю одну и ту же ошибку - что не настроено правило мэпа для свойства
Листинг программы
- public class RegisterViewModel
- {
- public string Email { get; set; }
- public string Login { get; set; }
- public string Password { get; set; }
- public string ConfirmPassword { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public DateTime? BirthDay { get; set; }
- }public class ApplicationUser : IdentityUser
- {
- public virtual UserInfo UserInfo { get; set; }
- }public class UserInfo
- {
- public int Id { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public DateTime RegisterDate { get; set; }
- public DateTime BirthDay { get; set; }
- public string MiddleName { get; set; }
- }
RegisterViewModel -> ApplicationUser
таким образом, чтобы была сформирована модель ApplicationUser
, у которой имелось свойство типаUserInfo
с заполненными данными. При мэппинге получаю ошибку
Листинг программы
- "Error mapping types.
- Mapping types:
- RegisterViewModel -> ApplicationUser
- Type Map configuration: RegisterViewModel -> ApplicationUser
- Property: UserInfo"
Листинг программы
- Mapper.Initialize(init =>
- {
- init.CreateMap<RegisterViewModel, ApplicationUser>()
- .ForMember(dest => dest.UserInfo, e => e.MapFrom(scr => scr))
- .ForMember(dest => dest.UserName, e => e.MapFrom(src => src.Login))
- .ForMember(dest => dest.Email, e => e.MapFrom(src => src.Email));
- init.CreateMap<RegisterViewModel, UserInfo>()
- .ForMember(dest => dest.FirstName, e => e.MapFrom(src => string.IsNullOrEmpty(src.FirstName) ? "Not stated" : src.FirstName))
- .ForMember(dest => dest.BirthDay, e => e.MapFrom(src => (DateTime)src.BirthDay))
- .ForMember(dest => dest.LastName, e => e.MapFrom(src => string.IsNullOrEmpty(src.LastName) ? "Not stated" : src.LastName))
- .ForMember(dest => dest.RegisterDate, e => e.MapFrom(src => DateTime.Now.Date));
- }
- );Mapper.Initialize(init =>
- {
- init.CreateMap<RegisterViewModel, ApplicationUser>()
- .ForMember(dest => dest.UserInfo, e => e.MapFrom(src => new UserInfo() {
- BirthDay = (DateTime)src.BirthDay,
- FirstName = string.IsNullOrEmpty(src.FirstName) ? "Not stated" : src.FirstName,
- LastName = string.IsNullOrEmpty(src.LastName) ? "Not stated" : src.LastName,
- RegisterDate = DateTime.Now.Date
- }))
- .ForMember(dest => dest.UserName, e => e.MapFrom(src => src.Login))
- .ForMember(dest => dest.Email, e => e.MapFrom(src => src.Email));
- }
- );
UserInfo
. Подскажите, пожалуйста, в чем я ошибся или как правильно настроить мэппинг при таких моделях? На англостэке находил подобный вариант и там описывался 1-й вариант правил. Спасибо.Решение задачи: «AutoMapper, Ошибка при вложенности»
textual
Листинг программы
- namespace Mapping
- {
- using System;
- using AutoMapper;
- internal class Program
- {
- private static void Main()
- {
- var registerViewModel = new RegisterViewModel
- {
- Email = "Test@mail.com",
- Login = "Login",
- Password = "pwd",
- ConfirmPassword = "pwd",
- FirstName = "Kos",
- LastName = "Kos",
- BirthDay = DateTime.UtcNow
- };
- Mapper.Initialize(cfg =>
- {
- cfg.CreateMap<RegisterViewModel, UserInfo>();
- cfg.CreateMap<RegisterViewModel, ApplicationUser>()
- .ForMember(dest => dest.UserInfo,
- opt => opt.MapFrom(src => src));
- });
- var model = Mapper.Map<ApplicationUser>(registerViewModel);
- }
- }
- public class RegisterViewModel
- {
- public string Email { get; set; }
- public string Login { get; set; }
- public string Password { get; set; }
- public string ConfirmPassword { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public DateTime? BirthDay { get; set; }
- }
- public class ApplicationUser
- {
- public virtual UserInfo UserInfo { get; set; }
- }
- public class UserInfo
- {
- public int Id { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public DateTime RegisterDate { get; set; }
- public DateTime BirthDay { get; set; }
- public string MiddleName { get; set; }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д