使用AutoMapper映射DTO后,Id字段变为0
After mapping DTO using AutoMapper, the Id field becomes 0
请在下面找到代码:
public class CustomerDto
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
}
public class Customer
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
}
// ...
var customers = _context.Customers.ToList();
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
return cusDtos;
cusDtos
中的所有对象对所有 属性 都有值,除了 Id
,Id
对所有对象都是 0。 customers 包含 Id
的值,但映射后 Id
变为 0。
谁能帮我解决这个问题?
提前致谢。
您是否尝试过更改此代码
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
以此改变
var cusDtos= Mapper.Map<List<CustomerDto>>(customers);
并找到自动映射器配置文件。并更改此
CreateMap<Customer, CustomerDto>()
.ForMember(m => m.Id, opt => opt.Ignore());
到这个
CreateMap<Customer, CustomerDto>();
AutoMapper 配置:
CreateMap<Customer, CustomerDto>();
您的代码:
var customers = _context.Customers.ToList();
var cusDtos = customers.Select(x => AutoMapper.Mapper.Map<CustomerDto>(x)).ToList();
return cusDtos;
请在下面找到代码:
public class CustomerDto
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
}
public class Customer
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public String Name { get; set; }
}
// ...
var customers = _context.Customers.ToList();
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
return cusDtos;
cusDtos
中的所有对象对所有 属性 都有值,除了 Id
,Id
对所有对象都是 0。 customers 包含 Id
的值,但映射后 Id
变为 0。
谁能帮我解决这个问题?
提前致谢。
您是否尝试过更改此代码
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
以此改变
var cusDtos= Mapper.Map<List<CustomerDto>>(customers);
并找到自动映射器配置文件。并更改此
CreateMap<Customer, CustomerDto>()
.ForMember(m => m.Id, opt => opt.Ignore());
到这个
CreateMap<Customer, CustomerDto>();
AutoMapper 配置:
CreateMap<Customer, CustomerDto>();
您的代码:
var customers = _context.Customers.ToList();
var cusDtos = customers.Select(x => AutoMapper.Mapper.Map<CustomerDto>(x)).ToList();
return cusDtos;