问题描述:
在使用 Automapper 把 DTO 转为 Model 的过程中,无法正常转换,导致某些属性的值为 null。
代码示例:
DTO 类:
public class UserDTO
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get; set; }
public string PhoneNumber { get; set; }
public bool IsActive { get; set; }
public DateTime LastLogin { get; set; }
}
Model 类:
public class UserModel
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get; set; }
public string PhoneNumber { get; set; }
public bool IsActive { get; set; }
public DateTime LastLogin { get; set; }
}
AutoMapper 配置:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap();
}
}
转换过程:
var userDTO = new UserDTO()
{
UserId = 1,
UserName = "testuser",
Password = "password",
Email = "testuser@test.com",
FirstName = "test",
LastName = "user",
FullName = "test user",
PhoneNumber = "123456789",
IsActive = true,
LastLogin = DateTime.Now
};
var userModel = mapper.Map(userDTO);
上述转换后,userModel 的 LastLogin 字段会被赋值为默认值,即 0001-01-01T00:00:00。
问题解决:
原因是 LastLogin 字段为 DateTime 类型,而在 DTO 对象中该字段赋